1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
"""OpenAPI core contrib flask requests module"""
from flask.wrappers import Request
from werkzeug.datastructures import Headers
from werkzeug.datastructures import ImmutableMultiDict
from openapi_core.contrib.werkzeug.requests import WerkzeugOpenAPIRequest
from openapi_core.datatypes import RequestParameters
class FlaskOpenAPIRequest(WerkzeugOpenAPIRequest):
def __init__(self, request: Request):
if not isinstance(request, Request):
raise TypeError(f"'request' argument is not type of {Request}")
self.request: Request = request
self.parameters = RequestParameters(
path=self.request.view_args or {},
query=ImmutableMultiDict(self.request.args),
header=Headers(self.request.headers),
cookie=self.request.cookies,
)
@property
def path_pattern(self) -> str:
if self.request.url_rule is None:
return self.path
path = self.get_path(self.request.url_rule.rule)
return self.path_regex.sub(r"{\1}", path)
|