clonepack/internal/api/router.go
GnomeZworc 274ea454dd
first with full handle over rpm
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-04-25 14:50:08 +02:00

50 lines
1.6 KiB
Go

package api
import (
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
func NewRouter(repoHandler *RepoHandler, cloneHandler *CloneHandler, syncHandler *SyncHandler, snapshotHandler *SnapshotHandler, proxyHandler *ProxyHandler) http.Handler {
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
r.Use(middleware.RequestID)
r.Get("/mirror/{repo_id}/*", proxyHandler.ServeFile)
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
JSON(w, http.StatusOK, map[string]string{"status": "ok"})
})
r.Route("/api/v1", func(r chi.Router) {
r.Route("/repos", func(r chi.Router) {
r.Post("/", repoHandler.Create)
r.Get("/", repoHandler.List)
r.Get("/{id}", repoHandler.Get)
r.Delete("/{id}", repoHandler.Delete)
r.Post("/{id}/clone", cloneHandler.StartClone)
r.Get("/{id}/clone/status", cloneHandler.GetStatus)
r.Post("/{id}/sync/trigger", syncHandler.Trigger)
r.Get("/{id}/sync/pending", syncHandler.ListPending)
r.Post("/{id}/sync/approve", syncHandler.Approve)
r.Post("/{id}/sync/reject", syncHandler.Reject)
r.Post("/{id}/sync/block", syncHandler.Block)
r.Post("/{id}/sync/unblock", syncHandler.Unblock)
r.Get("/{id}/sync/blocked", syncHandler.ListBlocked)
r.Post("/{id}/snapshots", snapshotHandler.Create)
r.Get("/{id}/snapshots", snapshotHandler.List)
r.Get("/{id}/snapshots/diff", snapshotHandler.Diff)
r.Get("/{id}/snapshots/{snap_id}", snapshotHandler.Get)
r.Delete("/{id}/snapshots/{snap_id}", snapshotHandler.Delete)
r.Post("/{id}/snapshots/{snap_id}/rollback", snapshotHandler.Rollback)
})
})
return r
}