Files
tingz/internal/http/router.go

31 lines
1009 B
Go

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)
}