42 lines
1.1 KiB
Python

from functools import partial
from typing import TYPE_CHECKING, Any, List
from django.urls import path
from .views import default_home, openapi_json, openapi_view
if TYPE_CHECKING:
from ninja import NinjaAPI # pragma: no cover
__all__ = ["get_openapi_urls", "get_root_url"]
def get_openapi_urls(api: "NinjaAPI") -> List[Any]:
result = []
if api.openapi_url:
view = partial(openapi_json, api=api)
if api.docs_decorator:
view = api.docs_decorator(view) # type: ignore
result.append(
path(api.openapi_url.lstrip("/"), view, name="openapi-json"),
)
assert (
api.openapi_url != api.docs_url
), "Please use different urls for openapi_url and docs_url"
if api.docs_url:
view = partial(openapi_view, api=api)
if api.docs_decorator:
view = api.docs_decorator(view) # type: ignore
result.append(
path(api.docs_url.lstrip("/"), view, name="openapi-view"),
)
return result
def get_root_url(api: "NinjaAPI") -> Any:
return path("", partial(default_home, api=api), name="api-root")