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 +}