weaver.wps_restapi.utils

Module Contents

weaver.wps_restapi.utils.LOGGER[source]
exception weaver.wps_restapi.utils.HTTPHeadFileResponse(code: int = 200, headers: weaver.typedefs.HeadersType | None = None, **kwargs: Any)[source]

Provides additional header handing when returning a response to HTTP HEAD request.

When returning from HTTP HEAD, the body contents are omitted from the response. The response MUST NOT contain the body contents, but the HTTP headers SHOULD be identical to the corresponding HTTP GET request.

Note

Even though no content is provided for HEAD response, 204 SHOULD NOT be used since it must emulate the GET response that would contain the content.

When setting HTTPException.empty_body on pyramid.httpexceptions.HTTPException derived classes, pyramid incorrectly drops important headers such as Content-Type and Content-Length that should be reported as if the file was returned when the represented entity is a file, although no content is actually present. When instead the body is omitted (text="" or body=b''), the HTTPException.prepare() method also incorrectly overrides the Content-Type and Content-Length values. Finally, Content-Length also gets recalculated when the content iterator is created from the initialization parameters. This class takes care of all these edge cases to properly report content headers of HEAD requests although none is provided.

Initialize self. See help(type(self)) for accurate signature.

prepare(environ)[source]

No contents for HEAD request.

weaver.wps_restapi.utils.wps_restapi_base_path(container: weaver.typedefs.AnySettingsContainer) str[source]
weaver.wps_restapi.utils.get_wps_restapi_base_url(container: weaver.typedefs.AnySettingsContainer) str[source]
weaver.wps_restapi.utils.get_schema_ref(schema: colander.SchemaNode, container: weaver.typedefs.AnySettingsContainer | None = None, ref_type: str = '$id', ref_name: True = True) Dict[str, str][source]

Generates the JSON OpenAPI schema reference relative to the current Weaver instance.

The provided schema should be one of the items listed in #/definitions of the /json endpoint. No validation is accomplished to avoid long processing of all references.

If setting weaver.schema_url is set, this value will be used direct as fully-defined base URL. This could be used to refer to a static endpoint where schemas are hosted. Otherwise, the current Web Application resolved location is employed with JSON OpenAPI path.

Parameters:
  • schema – schema-node instance or type for which to generate the OpenAPI reference.

  • container – application settings to retrieve the base URL of the schema location.

  • ref_type – key employed to form the reference (e.g.: “$id”, “$ref”, “$schema”, “@id”, etc.).

  • ref_name – indicate if the plain name should also be included under field "schema".

Returns:

OpenAPI schema reference

weaver.wps_restapi.utils.handle_schema_validation(schema: colander.SchemaNode | None = None) weaver.typedefs.AnyCallableWrapped[source]

Convert a schema validation error into an HTTP error with error details about the failure.

Parameters:

schema – If provided, document this schema as the reference of the failed schema validation.

Raises:

HTTPBadRequest – If any schema validation error occurs when handling the decorated function.

weaver.wps_restapi.utils.parse_content(request: weaver.typedefs.AnyRequestType | None = None, content: weaver.typedefs.JSON | str | None = None, content_schema: colander.SchemaNode | None = None, content_type: weaver.formats.ContentType | None = sd.RequestContentTypeHeader.default, content_type_schema: colander.SchemaNode | None = sd.RequestContentTypeHeader) weaver.typedefs.JSON | weaver.typedefs.CWL[source]

Load the request content with validation of expected content type and their schema.