From 26938eb6ed27e2ce0a02bdfcffb4ed99879403ae Mon Sep 17 00:00:00 2001 From: yusing Date: Sat, 10 May 2025 12:58:37 +0800 Subject: [PATCH] feat(api): add new route for listing routes by provider --- internal/api/v1/list.go | 3 +++ internal/route/routes/query.go | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/internal/api/v1/list.go b/internal/api/v1/list.go index c7339f5..9928994 100644 --- a/internal/api/v1/list.go +++ b/internal/api/v1/list.go @@ -20,6 +20,7 @@ import ( const ( ListRoute = "route" ListRoutes = "routes" + ListRoutesByProvider = "routes_by_provider" ListFiles = "files" ListMiddlewares = "middlewares" ListMiddlewareTraces = "middleware_trace" @@ -48,6 +49,8 @@ func List(cfg config.ConfigInstance, w http.ResponseWriter, r *http.Request) { } case ListRoutes: gphttp.RespondJSON(w, r, routes.ByAlias(route.RouteType(r.FormValue("type")))) + case ListRoutesByProvider: + gphttp.RespondJSON(w, r, routes.ByProvider()) case ListFiles: listFiles(w, r) case ListMiddlewares: diff --git a/internal/route/routes/query.go b/internal/route/routes/query.go index 44a0264..ae3d773 100644 --- a/internal/route/routes/query.go +++ b/internal/route/routes/query.go @@ -135,3 +135,11 @@ func ByAlias(typeFilter ...route.RouteType) map[string]Route { } return rts } + +func ByProvider() map[string][]Route { + rts := make(map[string][]Route) + for _, r := range HTTP.Iter { + rts[r.ProviderName()] = append(rts[r.ProviderName()], r) + } + return rts +}