update
This commit is contained in:
57
backend/routes.go
Normal file
57
backend/routes.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
func registerAPIRoutes(e *echo.Echo, app *App) {
|
||||
api := e.Group("/api")
|
||||
api.GET("/health", app.handleHealth)
|
||||
api.GET("/state", app.handleGetState)
|
||||
api.GET("/events", app.handleEvents)
|
||||
|
||||
api.POST("/admin/login", app.handleAdminLogin)
|
||||
api.POST("/admin/logout", app.handleAdminLogout, app.adminOnly)
|
||||
api.GET("/admin/state", app.handleGetState, app.adminOnly)
|
||||
api.PUT("/admin/settings", app.handleUpdateAdminSettings, app.adminOnly)
|
||||
api.POST("/admin/players", app.handleCreatePlayer, app.adminOnly)
|
||||
api.POST("/admin/players/auto-group", app.handleAutoGroupPlayers, app.adminOnly)
|
||||
api.PUT("/admin/players/:id", app.handleUpdatePlayer, app.adminOnly)
|
||||
api.DELETE("/admin/players/:id", app.handleDeletePlayer, app.adminOnly)
|
||||
api.PUT("/admin/scores/:stage/:id", app.handleUpdateScore, app.adminOnly)
|
||||
api.PUT("/admin/scores/:stage/:id/proof", app.handleUpdateScoreProof, app.adminOnly)
|
||||
api.DELETE("/admin/scores/:stage/:id/proof", app.handleDeleteScoreProof, app.adminOnly)
|
||||
api.POST("/admin/scores/:stage/:id/advice", app.handleScoreAdvice, app.adminOnly)
|
||||
api.POST("/admin/scores/:stage/reset", app.handleResetStageScores, app.adminOnly)
|
||||
}
|
||||
|
||||
func registerWebRoutes(e *echo.Echo, cfg Config) {
|
||||
e.GET("/*", func(c echo.Context) error {
|
||||
requestPath := strings.TrimPrefix(c.Param("*"), "/")
|
||||
if strings.HasPrefix(requestPath, "api") {
|
||||
return echo.ErrNotFound
|
||||
}
|
||||
|
||||
if requestPath == "" {
|
||||
requestPath = "index.html"
|
||||
}
|
||||
|
||||
clean := strings.TrimPrefix(filepath.Clean("/"+requestPath), "/")
|
||||
assetPath := filepath.Join(cfg.WebDir, clean)
|
||||
if stat, err := os.Stat(assetPath); err == nil && !stat.IsDir() {
|
||||
return c.File(assetPath)
|
||||
}
|
||||
|
||||
indexPath := filepath.Join(cfg.WebDir, "index.html")
|
||||
if stat, err := os.Stat(indexPath); err == nil && !stat.IsDir() {
|
||||
return c.File(indexPath)
|
||||
}
|
||||
|
||||
return c.String(http.StatusNotFound, "frontend build not found. run make build")
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user