package http import ( "log/slog" "net/http" "git.yigid.dev/fyb/tingz/internal/config" "git.yigid.dev/fyb/tingz/internal/deploy" "git.yigid.dev/fyb/tingz/internal/user" ) func NewRouter(cfg *config.Config, userMgr *user.Manager, deployMgr *deploy.Manager, logger *slog.Logger) http.Handler { mux := http.NewServeMux() baseURL := "https://docs.yigid.dev" server := NewServer(userMgr, deployMgr, logger, baseURL) adminAuth := AdminAuthMiddleware(cfg.AdminToken, logger) userAuth := UserAuthMiddleware(userMgr, logger) maxBytes := MaxBytesMiddleware(cfg.MaxUploadSize) mux.Handle("POST /api/v1/auth", adminAuth(http.HandlerFunc(server.handleAuthCreate))) mux.Handle("DELETE /api/v1/auth", adminAuth(http.HandlerFunc(server.handleAuthDelete))) mux.Handle("POST /api/v1/deploy", userAuth(maxBytes(http.HandlerFunc(server.handleDeploy)))) mux.HandleFunc("GET /api/v1/status", server.handleStatus) mux.HandleFunc("GET /api/hello", server.handleHello) return LoggingMiddleware(logger)(mux) }