def wrapper(f): try: DefaultRouter.add_url_rule(apiurl(rule), endpoint=endpoint, view_func=f, options=kw) except AssertionError: pass return f
def api_json(context, request): """ API URLs """ items = get_api_routes_for(BASE_URL) return { "url": DefaultRouter.url_for("api", force_external=True), "count": len(items), "items": items, }
def get_api_routes_for(segment): """ return a list of all routes registered for the given url segment """ adapter = DefaultRouter.get_adapter() out = [] rx = re.compile(r".*%s/[\w]+$" % segment) for rule in adapter.map.iter_rules(): if rx.match(rule.rule): endpoint = rule.endpoint info = DefaultRouter.view_functions.get(endpoint).__doc__ url = DefaultRouter.url_for(endpoint, force_external=True) out.append({ "url": url, "info": info and info.strip() or "No description available", "methods": ",".join(rule.methods), }) return out