mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 03:06:38 +08:00
113 lines
6.1 KiB
Go
113 lines
6.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"github.com/truewhile/MeBox/internal/service"
|
|
)
|
|
|
|
func registerLowercaseEmbyAuthRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
registerLowercaseEmbyUserRoutes(auth, svc)
|
|
registerLowercaseEmbyItemRoutes(auth, svc)
|
|
registerLowercaseEmbyPlaybackRoutes(auth, svc)
|
|
registerLowercaseEmbyProgressRoutes(auth, svc)
|
|
registerLowercaseEmbyUserDataRoutes(auth, svc)
|
|
registerLowercaseEmbySystemRoutes(auth, svc)
|
|
}
|
|
|
|
func registerLowercaseEmbyUserRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
auth.GET("/users/me", embyMeHandler(svc))
|
|
auth.GET("/users", embyListUsersHandler(svc))
|
|
auth.GET("/users/:userId", embyGetUserByIDHandler(svc))
|
|
auth.GET("/users/:userId/views", embyViewsHandler(svc))
|
|
auth.GET("/library/mediafolders", embyViewsHandler(svc))
|
|
auth.GET("/library/virtualfolders", embyVirtualFoldersHandler(svc))
|
|
auth.GET("/library/selectablemediafolders", embyVirtualFoldersHandler(svc))
|
|
}
|
|
|
|
func registerLowercaseEmbyItemRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
auth.GET("/items", embyItemsHandler(svc))
|
|
auth.GET("/users/:userId/items", embyItemsHandler(svc))
|
|
auth.GET("/items/counts", embyItemsCountsHandler(svc))
|
|
auth.GET("/users/:userId/items/counts", embyItemsCountsHandler(svc))
|
|
auth.GET("/items/latest", embyLatestItemsHandler(svc))
|
|
auth.GET("/items/resume", embyResumeItemsHandler(svc))
|
|
auth.GET("/users/:userId/items/resume", embyResumeItemsHandler(svc))
|
|
auth.GET("/useritems/resume", embyResumeItemsHandler(svc))
|
|
auth.GET("/items/:id", embyItemByIDHandler(svc))
|
|
auth.GET("/users/:userId/items/:id", embyUserItemByIDHandler(svc))
|
|
auth.GET("/shows/:id/seasons", embyShowSeasonsHandler(svc))
|
|
auth.GET("/shows/:id/episodes", embyShowEpisodesHandler(svc))
|
|
auth.GET("/users/:userId/shows/:id/seasons", embyShowSeasonsHandler(svc))
|
|
auth.GET("/users/:userId/shows/:id/episodes", embyShowEpisodesHandler(svc))
|
|
auth.GET("/shows/nextup", embyNextUpHandler(svc))
|
|
auth.GET("/users/:userId/shows/nextup", embyNextUpHandler(svc))
|
|
auth.GET("/shows/:id/nextup", embyShowNextUpHandler(svc))
|
|
auth.GET("/users/:userId/shows/:id/nextup", embyShowNextUpHandler(svc))
|
|
auth.GET("/mediasegments/:id", embyMediaSegmentsHandler(svc))
|
|
auth.GET("/items/:id/mediasegments", embyMediaSegmentsHandler(svc))
|
|
auth.GET("/users/:userId/items/:id/mediasegments", embyMediaSegmentsHandler(svc))
|
|
auth.GET("/artists", embyEmptyItemsHandler(svc))
|
|
auth.GET("/persons", embyEmptyItemsHandler(svc))
|
|
auth.GET("/genres", embyGenresHandler(svc))
|
|
auth.GET("/shows/upcoming", embyEmptyItemsHandler(svc))
|
|
auth.GET("/users/:userId/shows/upcoming", embyEmptyItemsHandler(svc))
|
|
auth.GET("/items/:id/similar", embySimilarHandler(svc))
|
|
auth.GET("/items/:id/thumbnailset", embyEmptyItemsHandler(svc))
|
|
auth.GET("/items/:id/thememedia", embyThemeMediaHandler(svc))
|
|
auth.GET("/users/:userId/items/:id/specialfeatures", embyEmptyItemsHandler(svc))
|
|
auth.GET("/users/:userId/items/:id/intros", embyEmptyItemsHandler(svc))
|
|
auth.GET("/items/:id/specialfeatures", embyEmptyItemsHandler(svc))
|
|
auth.GET("/items/:id/intros", embyEmptyItemsHandler(svc))
|
|
}
|
|
|
|
func registerLowercaseEmbyPlaybackRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
auth.GET("/items/:id/playbackinfo", embyPlaybackInfoHandler(svc))
|
|
auth.POST("/items/:id/playbackinfo", embyPlaybackInfoHandler(svc))
|
|
auth.GET("/users/:userId/items/:id/playbackinfo", embyPlaybackInfoHandler(svc))
|
|
auth.POST("/users/:userId/items/:id/playbackinfo", embyPlaybackInfoHandler(svc))
|
|
|
|
registerEmbyVideoStreamRoutes(auth, svc, "/videos")
|
|
auth.GET("/videos/:id/subtitles/:index/stream", embySubtitleStreamHandler(svc))
|
|
auth.HEAD("/videos/:id/subtitles/:index/stream", embySubtitleStreamHandler(svc))
|
|
auth.GET("/users/:userId/videos/:id/subtitles/:index/stream", embySubtitleStreamHandler(svc))
|
|
auth.HEAD("/users/:userId/videos/:id/subtitles/:index/stream", embySubtitleStreamHandler(svc))
|
|
// Official Emby/Swagger shape:
|
|
// /videos/{Id}/{MediaSourceId}/subtitles/{Index}/stream.{Format}
|
|
// The mediaSourceId segment is a bare path param named :seg (shared with the
|
|
// HLS /videos/:id/:seg catch-all) so gin allows both routes to coexist.
|
|
auth.GET("/videos/:id/:seg/subtitles/:index/stream.:format", embySubtitleStreamHandler(svc))
|
|
auth.HEAD("/videos/:id/:seg/subtitles/:index/stream.:format", embySubtitleStreamHandler(svc))
|
|
auth.GET("/users/:userId/videos/:id/:seg/subtitles/:index/stream.:format", embySubtitleStreamHandler(svc))
|
|
auth.HEAD("/users/:userId/videos/:id/:seg/subtitles/:index/stream.:format", embySubtitleStreamHandler(svc))
|
|
auth.GET("/videos/:id/master.m3u8", embyVideoHLSPlaylistHandler(svc))
|
|
auth.HEAD("/videos/:id/master.m3u8", embyVideoHLSPlaylistHandler(svc))
|
|
auth.GET("/videos/:id/main.m3u8", embyVideoHLSPlaylistHandler(svc))
|
|
auth.HEAD("/videos/:id/main.m3u8", embyVideoHLSPlaylistHandler(svc))
|
|
auth.GET("/videos/:id/:seg", embyVideoHLSSegmentHandler(svc))
|
|
}
|
|
|
|
func registerLowercaseEmbyProgressRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
auth.POST("/sessions/playing", embyPlayingProgressHandler(svc))
|
|
auth.POST("/sessions/playing/progress", embyPlayingProgressHandler(svc))
|
|
auth.POST("/sessions/playing/stopped", embyPlayingProgressHandler(svc))
|
|
}
|
|
|
|
func registerLowercaseEmbyUserDataRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
auth.POST("/users/:userId/favoriteitems/:itemId", embyFavoriteHandler(svc, true))
|
|
auth.DELETE("/users/:userId/favoriteitems/:itemId", embyFavoriteHandler(svc, false))
|
|
auth.POST("/users/:userId/playeditems/:itemId", embyMarkPlayedHandler(svc, true))
|
|
auth.DELETE("/users/:userId/playeditems/:itemId", embyMarkPlayedHandler(svc, false))
|
|
}
|
|
|
|
func registerLowercaseEmbySystemRoutes(auth *gin.RouterGroup, svc *service.Container) {
|
|
auth.GET("/sessions", embySessionsHandler(svc))
|
|
auth.GET("/system/configuration", embyServerConfigurationHandler(svc))
|
|
auth.GET("/system/wakeonlaninfo", embyEmptyArrayHandler(svc))
|
|
auth.GET("/scheduledtasks", embyEmptyArrayHandler(svc))
|
|
auth.GET("/livetv/recordings", embyEmptyItemsHandler(svc))
|
|
auth.GET("/system/activitylog/entries", embyEmptyItemsHandler(svc))
|
|
auth.GET("/web/configurationpages", embyEmptyArrayHandler(svc))
|
|
auth.POST("/users/:userId/configuration", embyNoContentHandler(svc))
|
|
}
|