File: requests.py

package info (click to toggle)
python-openapi-core 0.19.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,008 kB
  • sloc: python: 18,868; makefile: 47
file content (30 lines) | stat: -rw-r--r-- 1,048 bytes parent folder | download
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)