"""Module that exports methods compatible with the owsclient library. Only to be used in Flask applications. """ from __future__ import annotations from dataclasses import dataclass from typing import Optional from flask import g from owsrequest.context import RequestContext as FlaskOwsRequestContext # noqa: E501 from owsrequest.flask_request import next_correlation_id def correlation_id_getter() -> Optional[str]: """Wrapper for the next_correlation_id method.""" return next_correlation_id() @dataclass class RequestContext: """Implementation of the RequestContext protocol.""" authorization: str | None = None identity_id: str | None = None profile_id: int | None = None profile_type: str | None = None @classmethod def create_from_request_context(cls, request_context: FlaskOwsRequestContext) -> RequestContext: """Get a RequestContext from FlaskOwsRequestContext.""" return RequestContext( authorization=request_context.authorization, identity_id=request_context.jwt_identity_id, profile_id=request_context.profile_id, profile_type=request_context.profile_type, ) def request_context_getter() -> Optional[RequestContext]: """Wrapper for the get_request_context method. This function retrieves the current request context and wraps it in a RequestContextImpl object. """ if g.request_context: return RequestContext.create_from_request_context(g.request_context) return None