magpie.api.generic¶
Attributes¶
Classes¶
Utility that will try to resolve a path without appended slash if one was provided. |
Functions¶
Overrides default HTTP. |
|
Overrides the default |
|
Overrides the default HTTP |
|
|
Guess the best applicable response |
Tween that validates that the specified request |
|
Tween that applies the response |
|
|
Obtains additional exception content details about the |
|
Obtains additional content details about the |
Module Contents¶
- class magpie.api.generic.RemoveSlashNotFoundViewFactory(notfound_view=None)[source]¶
Bases:
object
Utility that will try to resolve a path without appended slash if one was provided.
- magpie.api.generic.internal_server_error(request: pyramid.request.Request) pyramid.httpexceptions.HTTPException [source]¶
Overrides default HTTP.
- magpie.api.generic.not_found_or_method_not_allowed(request: pyramid.request.Request) pyramid.httpexceptions.HTTPException [source]¶
Overrides the default
HTTPNotFound
[404] by appropriateHTTPMethodNotAllowed
[405] when applicable.Not found response can correspond to underlying process operation not finding a required item, or a completely unknown route (path did not match any existing API definition). Method not allowed is more specific to the case where the path matches an existing API route, but the specific request method (GET, POST, etc.) is not allowed on this path.
Without this fix, both situations return [404] regardless.
- magpie.api.generic.unauthorized_or_forbidden(request: pyramid.request.Request) pyramid.httpexceptions.HTTPException [source]¶
Overrides the default HTTP
Forbidden [403]
by appropriateUnauthorized [401]
when applicable.Unauthorized response is for restricted user access according to missing credentials and/or authorization headers. Forbidden response is for operation refused by the underlying process operations or due to insufficient permissions.
Without this fix, both situations return
Forbidden [403]
regardless.In case the request references to Magpie UI route, it is redirected to
magpie.ui.home.HomeViews.error_view()
for it to handle and display the error accordingly.
- magpie.api.generic.guess_target_format(request: pyramid.request.Request) Tuple[magpie.typedefs.Str, bool] [source]¶
Guess the best applicable response
Content-Type
header according to requestAccept
header andformat
query, or defaulting toCONTENT_TYPE_JSON
.- Returns:
tuple of matched MIME-type and where it was found (
True
: header,False
: query)
- magpie.api.generic.validate_accept_header_tween(handler: Callable[[pyramid.request.Request], pyramid.response.Response], registry: pyramid.registry.Registry) Callable[[pyramid.request.Request], pyramid.response.Response] [source]¶
Tween that validates that the specified request
Accept
header orformat
query (if any) is supported.Supported values are defined by
SUPPORTED_ACCEPT_TYPES
and for the given context of API or UI.- Raises:
HTTPNotAcceptable – if desired
Accept
orformat
specifier of content-type is not supported.
- magpie.api.generic.apply_response_format_tween(handler: Callable[[pyramid.request.Request], pyramid.httpexceptions.HTTPException], registry: pyramid.registry.Registry) Callable[[pyramid.request.Request], pyramid.response.Response] [source]¶
Tween that applies the response
Content-Type
according to the requestedAccept
header orformat
query.The target
Content-Type
is expected to have been validated byvalidate_accept_header_tween()
beforehand to handle not-acceptable errors. If an invalid format is detected at this stage, JSON is used by default. This can be the case for example forvalidate_accept_header_tween()
itself that raises the error about the invalidAccept
header orformat
query, but detects these inadequate parameters from incoming request.The tween also ensures that additional request metadata extracted from
get_request_info()
is applied to the response body if not already provided by a previous operation.
- magpie.api.generic.get_exception_info(response: pyramid.httpexceptions.HTTPException | pyramid.request.Request | pyramid.response.Response, content: magpie.typedefs.JSON | None = None, exception_details: bool = False) magpie.typedefs.JSON [source]¶
Obtains additional exception content details about the
response
according to available information.
- magpie.api.generic.get_request_info(request: pyramid.request.Request | pyramid.httpexceptions.HTTPException, default_message: magpie.typedefs.Str | None = None, exception_details: bool = False) magpie.typedefs.JSON [source]¶
Obtains additional content details about the
request
according to available information.