// Package handler — subtitle endpoints. package handler import ( "net/http" "github.com/gin-gonic/gin" "github.com/truewhile/MeBox/internal/service" ) func listSubtitlesHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { id := c.Param("id") if svc.EmbyRemote != nil && service.IsEmbyRemoteID(id) { c.JSON(http.StatusOK, gin.H{"tracks": []service.SubtitleTrack{}}) return } tracks, err := svc.Subtitle.Discover(c.Request.Context(), id) if err != nil { c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) return } if tracks == nil { tracks = []service.SubtitleTrack{} } c.JSON(http.StatusOK, gin.H{"tracks": tracks}) } } func serveSubtitleHandler(svc *service.Container) gin.HandlerFunc { return func(c *gin.Context) { path := c.Query("path") if path == "" { c.JSON(http.StatusBadRequest, gin.H{"error": "missing path"}) return } c.Header("Content-Type", "text/vtt; charset=utf-8") c.Header("Cache-Control", "no-cache, no-store, must-revalidate") if err := svc.Subtitle.Serve(c.Request.Context(), c.Param("id"), path, c.Writer); err != nil { c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) return } } }