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
)
|