31 lines
1009 B
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)
|
|
}
|
|
|