From b2485eda7901cc5ff2d70627e36e8bac2d87563f Mon Sep 17 00:00:00 2001 From: ari melody Date: Fri, 24 Jul 2026 12:41:36 +0100 Subject: [PATCH] move common static files, 503 on unavailable services --- cmd/stream-tools/main.go | 25 ++++++++++++++++--- music/music.go | 4 +-- music/pages/music.html | 2 +- .../public/fonts/inter/Inter-Black.woff2 | 0 .../fonts/inter/Inter-BlackItalic.woff2 | 0 .../public/fonts/inter/Inter-Bold.woff2 | 0 .../public/fonts/inter/Inter-BoldItalic.woff2 | 0 .../public/fonts/inter/Inter-ExtraBold.woff2 | 0 .../fonts/inter/Inter-ExtraBoldItalic.woff2 | 0 .../public/fonts/inter/Inter-ExtraLight.woff2 | 0 .../fonts/inter/Inter-ExtraLightItalic.woff2 | 0 .../public/fonts/inter/Inter-Italic.woff2 | 0 .../public/fonts/inter/Inter-Light.woff2 | 0 .../fonts/inter/Inter-LightItalic.woff2 | 0 .../public/fonts/inter/Inter-Medium.woff2 | 0 .../fonts/inter/Inter-MediumItalic.woff2 | 0 .../public/fonts/inter/Inter-Regular.woff2 | 0 .../public/fonts/inter/Inter-SemiBold.woff2 | 0 .../fonts/inter/Inter-SemiBoldItalic.woff2 | 0 .../public/fonts/inter/Inter-Thin.woff2 | 0 .../public/fonts/inter/Inter-ThinItalic.woff2 | 0 .../fonts/inter/InterDisplay-Black.woff2 | 0 .../inter/InterDisplay-BlackItalic.woff2 | 0 .../fonts/inter/InterDisplay-Bold.woff2 | 0 .../fonts/inter/InterDisplay-BoldItalic.woff2 | 0 .../fonts/inter/InterDisplay-ExtraBold.woff2 | 0 .../inter/InterDisplay-ExtraBoldItalic.woff2 | 0 .../fonts/inter/InterDisplay-ExtraLight.woff2 | 0 .../inter/InterDisplay-ExtraLightItalic.woff2 | 0 .../fonts/inter/InterDisplay-Italic.woff2 | 0 .../fonts/inter/InterDisplay-Light.woff2 | 0 .../inter/InterDisplay-LightItalic.woff2 | 0 .../fonts/inter/InterDisplay-Medium.woff2 | 0 .../inter/InterDisplay-MediumItalic.woff2 | 0 .../fonts/inter/InterDisplay-Regular.woff2 | 0 .../fonts/inter/InterDisplay-SemiBold.woff2 | 0 .../inter/InterDisplay-SemiBoldItalic.woff2 | 0 .../fonts/inter/InterDisplay-Thin.woff2 | 0 .../fonts/inter/InterDisplay-ThinItalic.woff2 | 0 .../fonts/inter/InterVariable-Italic.woff2 | 0 .../public/fonts/inter/InterVariable.woff2 | 0 .../public/fonts/inter/LICENSE.txt | 0 .../public/fonts/inter/inter.css | 0 static/static.go | 6 +++++ twitch/api.go | 2 ++ twitch/pages/labels.html | 2 +- twitch/twitch.go | 4 +-- 47 files changed, 36 insertions(+), 9 deletions(-) rename {music => static}/public/fonts/inter/Inter-Black.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-BlackItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-Bold.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-BoldItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-ExtraBold.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-ExtraBoldItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-ExtraLight.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-ExtraLightItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-Italic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-Light.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-LightItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-Medium.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-MediumItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-Regular.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-SemiBold.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-SemiBoldItalic.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-Thin.woff2 (100%) rename {music => static}/public/fonts/inter/Inter-ThinItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Black.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-BlackItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Bold.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-BoldItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-ExtraBold.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-ExtraLight.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-ExtraLightItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Italic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Light.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-LightItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Medium.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-MediumItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Regular.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-SemiBold.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-SemiBoldItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-Thin.woff2 (100%) rename {music => static}/public/fonts/inter/InterDisplay-ThinItalic.woff2 (100%) rename {music => static}/public/fonts/inter/InterVariable-Italic.woff2 (100%) rename {music => static}/public/fonts/inter/InterVariable.woff2 (100%) rename {music => static}/public/fonts/inter/LICENSE.txt (100%) rename {music => static}/public/fonts/inter/inter.css (100%) create mode 100644 static/static.go diff --git a/cmd/stream-tools/main.go b/cmd/stream-tools/main.go index 64791cc..3b8345f 100644 --- a/cmd/stream-tools/main.go +++ b/cmd/stream-tools/main.go @@ -5,13 +5,16 @@ import ( "fmt" "log" "math" + "net/http" "os" "os/signal" "strconv" + "strings" "syscall" "codeberg.org/arimelody/ari-stream-tools/learning" "codeberg.org/arimelody/ari-stream-tools/music" + "codeberg.org/arimelody/ari-stream-tools/static" "codeberg.org/arimelody/ari-stream-tools/twitch" "github.com/gin-gonic/gin" ) @@ -41,6 +44,7 @@ func main() { } srv := gin.New() + // srv.Use(gin.Logger()) srv.SetTrustedProxies([]string{"127.0.0.1", "::1"}) learningService, err := learning.New(ctx, learning.ServiceConfig{ @@ -48,26 +52,41 @@ func main() { }) if err != nil { log.Printf("Failed to create learning service: %v", err) + srv.Group("learning").Any("/*any", func(ctx *gin.Context) { + ctx.String(http.StatusServiceUnavailable, http.StatusText(http.StatusServiceUnavailable)) + }) } else { - learningService.BindRoutes(srv.Group("/learning")) + learningService.BindRoutes(srv.Group("learning")) } musicService, err := music.New(ctx) if err != nil { log.Printf("Failed to create music service: %v", err) + srv.Group("music").Any("/*any", func(ctx *gin.Context) { + ctx.String(http.StatusServiceUnavailable, http.StatusText(http.StatusServiceUnavailable)) + }) } else { - musicService.BindRoutes(srv.Group("/music")) + musicService.BindRoutes(srv.Group("music")) go musicService.Run(ctx) } twitchService, err := twitch.New(ctx, twitch.ServiceOptions{ Port: port }) if err != nil { log.Printf("Failed to create Twitch service: %v", err) + srv.Group("twitch").Any("/*any", func(ctx *gin.Context) { + ctx.String(http.StatusServiceUnavailable, http.StatusText(http.StatusServiceUnavailable)) + }) } else { - twitchService.BindRoutes(srv.Group("/twitch")) + twitchService.BindRoutes(srv.Group("twitch")) go twitchService.Run(ctx) } + public := srv.Group("/public") + public.GET("/*path", func(ctx *gin.Context) { + filepath := strings.TrimPrefix(ctx.Request.URL.Path, "/public/") + http.ServeFileFS(ctx.Writer, ctx.Request, static.PublicFS, filepath) + }) + go func() { log.Printf("Now serving at http://%s:%d\n", host, port) failed <- srv.Run(fmt.Sprintf("%s:%d", host, port)) diff --git a/music/music.go b/music/music.go index d3d2506..29ad912 100644 --- a/music/music.go +++ b/music/music.go @@ -73,8 +73,8 @@ func New(ctx context.Context) (*Service, error) { func (srv *Service) BindRoutes(group *gin.RouterGroup) { group.GET("/public/*path", func(ctx *gin.Context) { - path := strings.TrimPrefix(ctx.Request.URL.Path, "/music/") - http.ServeFileFS(ctx.Writer, ctx.Request, publicFS, path) + filepath := strings.TrimPrefix(ctx.Request.URL.Path, "/music/") + http.ServeFileFS(ctx.Writer, ctx.Request, publicFS, filepath) }) group.GET("/sse", func(ctx *gin.Context) { diff --git a/music/pages/music.html b/music/pages/music.html index d5d3db9..fc97329 100644 --- a/music/pages/music.html +++ b/music/pages/music.html @@ -4,7 +4,7 @@ Nothing is playing... - + diff --git a/music/public/fonts/inter/Inter-Black.woff2 b/static/public/fonts/inter/Inter-Black.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Black.woff2 rename to static/public/fonts/inter/Inter-Black.woff2 diff --git a/music/public/fonts/inter/Inter-BlackItalic.woff2 b/static/public/fonts/inter/Inter-BlackItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-BlackItalic.woff2 rename to static/public/fonts/inter/Inter-BlackItalic.woff2 diff --git a/music/public/fonts/inter/Inter-Bold.woff2 b/static/public/fonts/inter/Inter-Bold.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Bold.woff2 rename to static/public/fonts/inter/Inter-Bold.woff2 diff --git a/music/public/fonts/inter/Inter-BoldItalic.woff2 b/static/public/fonts/inter/Inter-BoldItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-BoldItalic.woff2 rename to static/public/fonts/inter/Inter-BoldItalic.woff2 diff --git a/music/public/fonts/inter/Inter-ExtraBold.woff2 b/static/public/fonts/inter/Inter-ExtraBold.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-ExtraBold.woff2 rename to static/public/fonts/inter/Inter-ExtraBold.woff2 diff --git a/music/public/fonts/inter/Inter-ExtraBoldItalic.woff2 b/static/public/fonts/inter/Inter-ExtraBoldItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-ExtraBoldItalic.woff2 rename to static/public/fonts/inter/Inter-ExtraBoldItalic.woff2 diff --git a/music/public/fonts/inter/Inter-ExtraLight.woff2 b/static/public/fonts/inter/Inter-ExtraLight.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-ExtraLight.woff2 rename to static/public/fonts/inter/Inter-ExtraLight.woff2 diff --git a/music/public/fonts/inter/Inter-ExtraLightItalic.woff2 b/static/public/fonts/inter/Inter-ExtraLightItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-ExtraLightItalic.woff2 rename to static/public/fonts/inter/Inter-ExtraLightItalic.woff2 diff --git a/music/public/fonts/inter/Inter-Italic.woff2 b/static/public/fonts/inter/Inter-Italic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Italic.woff2 rename to static/public/fonts/inter/Inter-Italic.woff2 diff --git a/music/public/fonts/inter/Inter-Light.woff2 b/static/public/fonts/inter/Inter-Light.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Light.woff2 rename to static/public/fonts/inter/Inter-Light.woff2 diff --git a/music/public/fonts/inter/Inter-LightItalic.woff2 b/static/public/fonts/inter/Inter-LightItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-LightItalic.woff2 rename to static/public/fonts/inter/Inter-LightItalic.woff2 diff --git a/music/public/fonts/inter/Inter-Medium.woff2 b/static/public/fonts/inter/Inter-Medium.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Medium.woff2 rename to static/public/fonts/inter/Inter-Medium.woff2 diff --git a/music/public/fonts/inter/Inter-MediumItalic.woff2 b/static/public/fonts/inter/Inter-MediumItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-MediumItalic.woff2 rename to static/public/fonts/inter/Inter-MediumItalic.woff2 diff --git a/music/public/fonts/inter/Inter-Regular.woff2 b/static/public/fonts/inter/Inter-Regular.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Regular.woff2 rename to static/public/fonts/inter/Inter-Regular.woff2 diff --git a/music/public/fonts/inter/Inter-SemiBold.woff2 b/static/public/fonts/inter/Inter-SemiBold.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-SemiBold.woff2 rename to static/public/fonts/inter/Inter-SemiBold.woff2 diff --git a/music/public/fonts/inter/Inter-SemiBoldItalic.woff2 b/static/public/fonts/inter/Inter-SemiBoldItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-SemiBoldItalic.woff2 rename to static/public/fonts/inter/Inter-SemiBoldItalic.woff2 diff --git a/music/public/fonts/inter/Inter-Thin.woff2 b/static/public/fonts/inter/Inter-Thin.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-Thin.woff2 rename to static/public/fonts/inter/Inter-Thin.woff2 diff --git a/music/public/fonts/inter/Inter-ThinItalic.woff2 b/static/public/fonts/inter/Inter-ThinItalic.woff2 similarity index 100% rename from music/public/fonts/inter/Inter-ThinItalic.woff2 rename to static/public/fonts/inter/Inter-ThinItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Black.woff2 b/static/public/fonts/inter/InterDisplay-Black.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Black.woff2 rename to static/public/fonts/inter/InterDisplay-Black.woff2 diff --git a/music/public/fonts/inter/InterDisplay-BlackItalic.woff2 b/static/public/fonts/inter/InterDisplay-BlackItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-BlackItalic.woff2 rename to static/public/fonts/inter/InterDisplay-BlackItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Bold.woff2 b/static/public/fonts/inter/InterDisplay-Bold.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Bold.woff2 rename to static/public/fonts/inter/InterDisplay-Bold.woff2 diff --git a/music/public/fonts/inter/InterDisplay-BoldItalic.woff2 b/static/public/fonts/inter/InterDisplay-BoldItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-BoldItalic.woff2 rename to static/public/fonts/inter/InterDisplay-BoldItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-ExtraBold.woff2 b/static/public/fonts/inter/InterDisplay-ExtraBold.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-ExtraBold.woff2 rename to static/public/fonts/inter/InterDisplay-ExtraBold.woff2 diff --git a/music/public/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 b/static/public/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 rename to static/public/fonts/inter/InterDisplay-ExtraBoldItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-ExtraLight.woff2 b/static/public/fonts/inter/InterDisplay-ExtraLight.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-ExtraLight.woff2 rename to static/public/fonts/inter/InterDisplay-ExtraLight.woff2 diff --git a/music/public/fonts/inter/InterDisplay-ExtraLightItalic.woff2 b/static/public/fonts/inter/InterDisplay-ExtraLightItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-ExtraLightItalic.woff2 rename to static/public/fonts/inter/InterDisplay-ExtraLightItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Italic.woff2 b/static/public/fonts/inter/InterDisplay-Italic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Italic.woff2 rename to static/public/fonts/inter/InterDisplay-Italic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Light.woff2 b/static/public/fonts/inter/InterDisplay-Light.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Light.woff2 rename to static/public/fonts/inter/InterDisplay-Light.woff2 diff --git a/music/public/fonts/inter/InterDisplay-LightItalic.woff2 b/static/public/fonts/inter/InterDisplay-LightItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-LightItalic.woff2 rename to static/public/fonts/inter/InterDisplay-LightItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Medium.woff2 b/static/public/fonts/inter/InterDisplay-Medium.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Medium.woff2 rename to static/public/fonts/inter/InterDisplay-Medium.woff2 diff --git a/music/public/fonts/inter/InterDisplay-MediumItalic.woff2 b/static/public/fonts/inter/InterDisplay-MediumItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-MediumItalic.woff2 rename to static/public/fonts/inter/InterDisplay-MediumItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Regular.woff2 b/static/public/fonts/inter/InterDisplay-Regular.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Regular.woff2 rename to static/public/fonts/inter/InterDisplay-Regular.woff2 diff --git a/music/public/fonts/inter/InterDisplay-SemiBold.woff2 b/static/public/fonts/inter/InterDisplay-SemiBold.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-SemiBold.woff2 rename to static/public/fonts/inter/InterDisplay-SemiBold.woff2 diff --git a/music/public/fonts/inter/InterDisplay-SemiBoldItalic.woff2 b/static/public/fonts/inter/InterDisplay-SemiBoldItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-SemiBoldItalic.woff2 rename to static/public/fonts/inter/InterDisplay-SemiBoldItalic.woff2 diff --git a/music/public/fonts/inter/InterDisplay-Thin.woff2 b/static/public/fonts/inter/InterDisplay-Thin.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-Thin.woff2 rename to static/public/fonts/inter/InterDisplay-Thin.woff2 diff --git a/music/public/fonts/inter/InterDisplay-ThinItalic.woff2 b/static/public/fonts/inter/InterDisplay-ThinItalic.woff2 similarity index 100% rename from music/public/fonts/inter/InterDisplay-ThinItalic.woff2 rename to static/public/fonts/inter/InterDisplay-ThinItalic.woff2 diff --git a/music/public/fonts/inter/InterVariable-Italic.woff2 b/static/public/fonts/inter/InterVariable-Italic.woff2 similarity index 100% rename from music/public/fonts/inter/InterVariable-Italic.woff2 rename to static/public/fonts/inter/InterVariable-Italic.woff2 diff --git a/music/public/fonts/inter/InterVariable.woff2 b/static/public/fonts/inter/InterVariable.woff2 similarity index 100% rename from music/public/fonts/inter/InterVariable.woff2 rename to static/public/fonts/inter/InterVariable.woff2 diff --git a/music/public/fonts/inter/LICENSE.txt b/static/public/fonts/inter/LICENSE.txt similarity index 100% rename from music/public/fonts/inter/LICENSE.txt rename to static/public/fonts/inter/LICENSE.txt diff --git a/music/public/fonts/inter/inter.css b/static/public/fonts/inter/inter.css similarity index 100% rename from music/public/fonts/inter/inter.css rename to static/public/fonts/inter/inter.css diff --git a/static/static.go b/static/static.go new file mode 100644 index 0000000..0e82699 --- /dev/null +++ b/static/static.go @@ -0,0 +1,6 @@ +package static + +import "embed" + +//go:embed public +var PublicFS embed.FS diff --git a/twitch/api.go b/twitch/api.go index f9d265b..2346947 100644 --- a/twitch/api.go +++ b/twitch/api.go @@ -412,6 +412,7 @@ type ( // Unfortunately, this function is very unreliable for pulling chronological // subscription records. Twitch API does not currently provide a mechanism for // fetching the latest subscriber; this will need to be tracked manually. +/* func (srv *Service) getSubscribers( ctx context.Context, broadcasterID string, @@ -442,3 +443,4 @@ func (srv *Service) getSubscribers( return resData, nil } +*/ diff --git a/twitch/pages/labels.html b/twitch/pages/labels.html index f6fc010..62ad8e9 100644 --- a/twitch/pages/labels.html +++ b/twitch/pages/labels.html @@ -4,7 +4,7 @@ Twitch Labels - + diff --git a/twitch/twitch.go b/twitch/twitch.go index 844a8c7..25080d0 100644 --- a/twitch/twitch.go +++ b/twitch/twitch.go @@ -178,8 +178,8 @@ func New(ctx context.Context, opts ServiceOptions) (*Service, error) { func (srv *Service) BindRoutes(group *gin.RouterGroup) { group.GET("/public/*path", func(ctx *gin.Context) { - path := strings.TrimPrefix(ctx.Request.URL.Path, "/twitch/") - http.ServeFileFS(ctx.Writer, ctx.Request, publicFS, path) + filepath := strings.TrimPrefix(ctx.Request.URL.Path, "/twitch/") + http.ServeFileFS(ctx.Writer, ctx.Request, publicFS, filepath) }) group.GET("/login", func(ctx *gin.Context) {