Changed routing framework from mux to Gin.
Swagger doc is now included in the application. A fronted can now be hosted from the application.
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package conf
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"fmt"
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/gin-contrib/static"
|
||||
"github.com/gin-gonic/gin"
|
||||
"log"
|
||||
"music-server/pkg/api"
|
||||
"music-server/pkg/db"
|
||||
"net/http"
|
||||
"music-server/pkg/helpers"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
@@ -48,24 +50,47 @@ func CloseDb() {
|
||||
defer db.CloseDb()
|
||||
}
|
||||
|
||||
func SetupRestServer() {
|
||||
r := mux.NewRouter()
|
||||
r.HandleFunc("/sync", api.SyncHandler)
|
||||
r.HandleFunc("/sync/{func}", api.SyncHandler)
|
||||
r.HandleFunc("/music", api.MusicHandler)
|
||||
r.HandleFunc("/music/{func}", api.MusicHandler)
|
||||
r.HandleFunc("/music/{func}/{func2}", api.MusicHandler)
|
||||
r.HandleFunc("/{func}", api.IndexHandler)
|
||||
r.Handle("/", http.FileServer(http.FS(os.DirFS("frontend/dist"))))
|
||||
http.Handle("/", r)
|
||||
func SetupRestServer(frontend embed.FS, swagger embed.FS) {
|
||||
|
||||
router := gin.Default()
|
||||
router.Use(helpers.SetCorsAndNoCacheHeaders())
|
||||
|
||||
sync := api.NewSync()
|
||||
syncGroup := router.Group("/sync")
|
||||
{
|
||||
syncGroup.GET("", sync.SyncGames)
|
||||
syncGroup.GET("/reset", sync.ResetGames)
|
||||
}
|
||||
|
||||
music := api.NewMusic()
|
||||
musicGroup := router.Group("/music")
|
||||
{
|
||||
musicGroup.GET("", music.GetSong)
|
||||
musicGroup.GET("first", music.GetMusicFirst)
|
||||
musicGroup.GET("reset", music.ResetMusic)
|
||||
musicGroup.GET("rand", music.GetRandomSong)
|
||||
musicGroup.GET("rand/low", music.GetRandomSongLowChance)
|
||||
musicGroup.GET("info", music.GetSongInfo)
|
||||
musicGroup.GET("list", music.GetPlayedSongs)
|
||||
musicGroup.GET("next", music.GetNextSong)
|
||||
musicGroup.GET("previous", music.GetPreviousSong)
|
||||
musicGroup.GET("all", music.GetAllGames)
|
||||
musicGroup.GET("all/random", music.GetAllGamesRandom)
|
||||
musicGroup.PUT("played", music.PutPlayed)
|
||||
musicGroup.GET("addQue", music.AddLatestToQue)
|
||||
}
|
||||
|
||||
index := api.NewIndex()
|
||||
router.GET("/version", index.GetVersion)
|
||||
router.GET("/test", index.GetDBTest)
|
||||
router.StaticFS("/swagger", helpers.EmbedFolder(swagger, "swagger", false))
|
||||
router.Use(static.Serve("/", helpers.EmbedFolder(frontend, "frontend/dist", true)))
|
||||
|
||||
port := os.Getenv("PORT")
|
||||
if port == "" {
|
||||
port = "8080"
|
||||
log.Printf("Defaulting to port %s", port)
|
||||
}
|
||||
|
||||
log.Printf("Listening on port %s", port)
|
||||
log.Printf("Open http://localhost:%s in the browser", port)
|
||||
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
|
||||
router.Run(fmt.Sprintf(":%s", port))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user