From db8214cb023e8941216355ea803814ba2bb10e92 Mon Sep 17 00:00:00 2001 From: Sebastian Olsson Date: Tue, 14 Jan 2025 10:01:48 +0100 Subject: [PATCH] Added support for fetching character images from the server --- internal/backend/charecters.go | 35 +++++++++++++++++++++++++++++++++ internal/backend/sync.go | 6 +++--- internal/server/indexHandler.go | 10 ++++++++++ internal/server/routes.go | 2 ++ 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 internal/backend/charecters.go diff --git a/internal/backend/charecters.go b/internal/backend/charecters.go new file mode 100644 index 0000000..41f952a --- /dev/null +++ b/internal/backend/charecters.go @@ -0,0 +1,35 @@ +package backend + +import ( + "log" + "os" + "strings" +) + +func GetCharacters() []string { + musicPath := os.Getenv("MUSIC_PATH") + charactersPath := musicPath + "characters/" + files, err := os.ReadDir(charactersPath) + if err != nil { + log.Fatal(err) + } + + var characters []string + for _, file := range files { + if isImage(file) { + characters = append(characters, file.Name()) + } + } + return characters +} + +func GetCharacter(character string) string { + musicPath := os.Getenv("MUSIC_PATH") + charactersPath := musicPath + "characters/" + return charactersPath + character +} + +func isImage(entry os.DirEntry) bool { + return !entry.IsDir() && (strings.HasSuffix(entry.Name(), ".jpg") || strings.HasSuffix(entry.Name(), ".png")) +} + diff --git a/internal/backend/sync.go b/internal/backend/sync.go index 264c789..a3729c1 100644 --- a/internal/backend/sync.go +++ b/internal/backend/sync.go @@ -77,7 +77,7 @@ func SyncGames() { dir = "/Users/sebastian/ResilioSync/Sorterat_test/" } fmt.Printf("dir: %s\n", dir) - foldersToSkip := []string{".sync", "dist", "old"} + foldersToSkip := []string{".sync", "dist", "old", "characters"} fmt.Println(foldersToSkip) db.SetGameDeletionDate() checkBrokenSongs() @@ -107,7 +107,7 @@ func SyncGamesQuick() { dir = "/Users/sebastian/ResilioSync/Sorterat_test/" } fmt.Printf("dir: %s\n", dir) - foldersToSkip := []string{".sync", "dist", "old"} + foldersToSkip := []string{".sync", "dist", "old", "characters"} fmt.Println(foldersToSkip) db.SetGameDeletionDate() checkBrokenSongs() @@ -273,7 +273,7 @@ func syncGamesNew(full bool) Response { fmt.Printf("dir: %s\n", musicPath) repo = repository.New(db.Dbpool) start := time.Now() - foldersToSkip := []string{".sync", "dist", "old"} + foldersToSkip := []string{".sync", "dist", "old", "characters"} fmt.Println(foldersToSkip) var err error diff --git a/internal/server/indexHandler.go b/internal/server/indexHandler.go index 6f482f8..22c9157 100644 --- a/internal/server/indexHandler.go +++ b/internal/server/indexHandler.go @@ -26,3 +26,13 @@ func (i *IndexHandler) GetDBTest(ctx echo.Context) error { backend.TestDB() return ctx.JSON(http.StatusOK, "TestedDB") } + +func (i *IndexHandler) GetCharacters(ctx echo.Context) error { + characters := backend.GetCharacters() + return ctx.JSON(http.StatusOK, characters) +} + +func (i *IndexHandler) GetCharacter(ctx echo.Context) error { + character := ctx.QueryParam("character") + return ctx.File(backend.GetCharacter(character)) +} diff --git a/internal/server/routes.go b/internal/server/routes.go index 1e38991..c453011 100644 --- a/internal/server/routes.go +++ b/internal/server/routes.go @@ -39,6 +39,8 @@ func (s *Server) RegisterRoutes() http.Handler { index := NewIndexHandler() e.GET("/version", index.GetVersion) e.GET("/health", index.GetDBTest) + e.GET("/character", index.GetCharacter) + e.GET("/characters", index.GetCharacters) sync := NewSyncHandler() syncGroup := e.Group("/sync")