package surf // RouteInfo is a read-only snapshot of one registered route after Assemble // or BuildRouter. type RouteInfo struct { Method string Pattern string PluginID string Middleware []string Raw bool } // AdminPrefix reports the cabana admin mount path set by BuildRouter. False // means no plugin registers an admin controller, so no admin routes exist. func (r *Router) AdminPrefix() (string, bool) { if r == nil || !r.adminMounted { return "", false } return r.adminPrefix, true } // Routes returns a defensive copy of every registered route. func (r *Router) Routes() []RouteInfo { if r == nil { return nil } out := make([]RouteInfo, len(r.routes)) for i, rt := range r.routes { mw := append([]string{}, rt.middleware...) out[i] = RouteInfo{ Method: rt.method, Pattern: rt.path, PluginID: rt.pluginID, Middleware: mw, Raw: rt.raw, } } return out }