pointsecio.middleware

Submodules

Package Contents

Classes

PointSecIOMiddleware

High level PointSecIO middleware that manages a list o middlewares wrapped around an

SwaggerUIMiddleware

Helper class that provides a standard way to create an ABC using

class pointsecio.middleware.PointSecIOMiddleware(app: starlette.types.ASGIApp, middlewares: Optional[List[Type[starlette.types.ASGIApp]]] = None)

High level PointSecIO middleware that manages a list o middlewares wrapped around an application.

Parameters
  • app – App to wrap middleware around.

  • middlewares – List of middlewares to wrap around app. The list should be ordered from outer to inner middleware.

default_middlewares
add_api(self, specification: Union[pathlib.Path, str, dict], base_path: Optional[str] = None, arguments: Optional[dict] = None, **kwargs) None

Add an API to the underlying routing middleware based on a OpenAPI spec.

Parameters
  • specification – OpenAPI spec as dict or path to file.

  • base_path – Base path where to add this API.

  • arguments – Jinja arguments to replace in the spec.

async __call__(self, scope: starlette.types.Scope, receive: starlette.types.Receive, send: starlette.types.Send) None
class pointsecio.middleware.SwaggerUIMiddleware(app: starlette.types.ASGIApp)

Bases: pointsecio.middleware.base.AppMiddleware

Helper class that provides a standard way to create an ABC using inheritance.

Middleware that hosts a swagger UI.

Parameters

app – app to wrap in middleware.

__slots__ = []
add_api(self, specification: Union[pathlib.Path, str, dict], base_path: Optional[str] = None, arguments: Optional[dict] = None, **kwargs) None

Add an API to the router based on a OpenAPI spec.

Parameters
  • specification – OpenAPI spec as dict or path to file.

  • base_path – Base path where to add this API.

  • arguments – Jinja arguments to replace in the spec.

async __call__(self, scope: starlette.types.Scope, receive: starlette.types.Receive, send: starlette.types.Send) None
async default_fn(self, _scope: starlette.types.Scope, receive: starlette.types.Receive, send: starlette.types.Send) None

Callback to call next app as default when no matching route is found.

Unfortunately we cannot just pass the next app as default, since the router manipulates the scope when descending into mounts, losing information about the base path. Therefore, we use the original scope instead.

This is caused by https://github.com/encode/starlette/issues/1336.