File: integrations.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 (69 lines) | stat: -rw-r--r-- 2,249 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
"""OpenAPI core unmarshalling processors module"""

from typing import Generic

from openapi_core.app import OpenAPI
from openapi_core.protocols import Request
from openapi_core.protocols import Response
from openapi_core.typing import RequestType
from openapi_core.typing import ResponseType
from openapi_core.unmarshalling.request.datatypes import RequestUnmarshalResult
from openapi_core.unmarshalling.response.datatypes import (
    ResponseUnmarshalResult,
)
from openapi_core.validation.integrations import ValidationIntegration


class UnmarshallingIntegration(
    ValidationIntegration[RequestType, ResponseType]
):
    def unmarshal_request(
        self, request: RequestType
    ) -> RequestUnmarshalResult:
        openapi_request = self.get_openapi_request(request)
        return self.openapi.unmarshal_request(
            openapi_request,
        )

    def unmarshal_response(
        self,
        request: RequestType,
        response: ResponseType,
    ) -> ResponseUnmarshalResult:
        openapi_request = self.get_openapi_request(request)
        openapi_response = self.get_openapi_response(response)
        return self.openapi.unmarshal_response(
            openapi_request, openapi_response
        )


class AsyncUnmarshallingIntegration(Generic[RequestType, ResponseType]):
    def __init__(
        self,
        openapi: OpenAPI,
    ):
        self.openapi = openapi

    async def get_openapi_request(self, request: RequestType) -> Request:
        raise NotImplementedError

    async def get_openapi_response(self, response: ResponseType) -> Response:
        raise NotImplementedError

    async def unmarshal_request(
        self,
        request: RequestType,
    ) -> RequestUnmarshalResult:
        openapi_request = await self.get_openapi_request(request)
        return self.openapi.unmarshal_request(openapi_request)

    async def unmarshal_response(
        self,
        request: RequestType,
        response: ResponseType,
    ) -> ResponseUnmarshalResult:
        openapi_request = await self.get_openapi_request(request)
        openapi_response = await self.get_openapi_response(response)
        return self.openapi.unmarshal_response(
            openapi_request, openapi_response
        )