- Update agent-ops project rules and roadmap files - Add proto-socket infrastructure communication rail milestone - Update Flutter pubspec.lock and contracts notes - Enhance core service: config, HTTP middleware, router - Add notification module improvements - Add protosocket internal package
43 lines
1 KiB
Go
43 lines
1 KiB
Go
package http
|
|
|
|
import (
|
|
"log/slog"
|
|
stdhttp "net/http"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
chimiddleware "github.com/go-chi/chi/v5/middleware"
|
|
)
|
|
|
|
type AuthConfig struct {
|
|
Username string
|
|
Password string
|
|
}
|
|
|
|
func NewRouter(handler *Handler, logger *slog.Logger, auth AuthConfig, protoSocket stdhttp.Handler, protoSocketPath string) stdhttp.Handler {
|
|
r := chi.NewRouter()
|
|
r.Use(chimiddleware.RequestID)
|
|
r.Use(chimiddleware.RealIP)
|
|
r.Use(loggingMiddleware(logger))
|
|
r.Use(chimiddleware.Recoverer)
|
|
|
|
r.Get("/healthz", handler.Healthz)
|
|
|
|
protected := chi.NewRouter()
|
|
protected.Use(basicAuthMiddleware(auth))
|
|
protected.Get("/readyz", handler.Readyz)
|
|
|
|
if protoSocket != nil && protoSocketPath != "" {
|
|
protected.Handle(protoSocketPath, protoSocket)
|
|
}
|
|
|
|
protected.Route("/api", func(r chi.Router) {
|
|
r.Post("/integrations/plane/tasks", handler.CreatePlaneTask)
|
|
r.Post("/tasks", handler.CreateTask)
|
|
r.Get("/tasks", handler.ListTasks)
|
|
r.Get("/tasks/{id}", handler.GetTask)
|
|
r.Post("/tasks/{id}/enqueue", handler.EnqueueTask)
|
|
})
|
|
r.Mount("/", protected)
|
|
|
|
return r
|
|
}
|