40 lines
943 B
Go
40 lines
943 B
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"blockyserver/internal/config"
|
|
"blockyserver/internal/service"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/go-chi/chi/v5/middleware"
|
|
)
|
|
|
|
// NewServer creates a new HTTP server with all routes configured
|
|
func NewServer(svc *service.MergeService) http.Handler {
|
|
r := chi.NewRouter()
|
|
|
|
// Middleware
|
|
r.Use(middleware.Logger)
|
|
r.Use(middleware.Recoverer)
|
|
r.Use(middleware.Timeout(60 * time.Second))
|
|
|
|
// Load endpoint config
|
|
cfg := config.LoadEndpointConfig()
|
|
guards := NewEndpointGuards(cfg)
|
|
|
|
// Create handlers
|
|
h := NewHandlers(svc)
|
|
|
|
// Routes
|
|
r.Get("/health", h.HandleHealth)
|
|
r.Get("/openapi.json", h.HandleOpenAPISpec)
|
|
r.Get("/docs", h.HandleSwaggerUI)
|
|
r.With(guards["glb"]).Post("/render/glb", h.HandleGLB)
|
|
r.With(guards["png"]).Post("/render/png", h.HandlePNG)
|
|
r.With(guards["gif"]).Post("/render/gif", h.HandleGIF)
|
|
r.With(guards["mp4"]).Post("/render/mp4", h.HandleMP4)
|
|
|
|
return r
|
|
}
|