nomadcode/services/core/internal/http/router.go
toki 9258f9de54 feat: gito http webhook consumer readiness milestone completion
- Update milestone and SDD documents
- Add webhook HTTP receiver with idempotency checks
- Add config for webhook endpoints
- Implement gito events processing
- Add HTTP handlers and router updates
- Archive completed task files
2026-06-19 14:06:24 +09:00

46 lines
1.3 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)
r.Post("/api/integrations/plane/webhook", handler.ReceivePlaneWebhook)
r.Post("/api/integrations/gito/webhook", handler.ReceiveGitoWebhook)
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("/integrations/{provider}/tasks", handler.CreateWorkItemTask)
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
}