-
-
Notifications
You must be signed in to change notification settings - Fork 132
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
191 additions
and
108 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,22 @@ | ||
from json import loads | ||
|
||
from openapi_core.deserializing.media_types.datatypes import ( | ||
MediaTypeDeserializersDict, | ||
) | ||
from openapi_core.deserializing.media_types.factories import ( | ||
MediaTypeDeserializersFactory, | ||
) | ||
from openapi_core.deserializing.media_types.util import data_form_loads | ||
from openapi_core.deserializing.media_types.util import urlencoded_form_loads | ||
|
||
__all__ = ["media_type_deserializers_factory"] | ||
|
||
media_type_deserializers_factory = MediaTypeDeserializersFactory() | ||
media_type_deserializers: MediaTypeDeserializersDict = { | ||
"application/json": loads, | ||
"application/x-www-form-urlencoded": urlencoded_form_loads, | ||
"multipart/form-data": data_form_loads, | ||
} | ||
|
||
media_type_deserializers_factory = MediaTypeDeserializersFactory( | ||
media_type_deserializers=media_type_deserializers, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,6 @@ | ||
from typing import Any | ||
from typing import Callable | ||
from typing import Dict | ||
|
||
DeserializerCallable = Callable[[Any], Any] | ||
MediaTypeDeserializersDict = Dict[str, DeserializerCallable] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,60 @@ | ||
from json import loads | ||
from typing import Any | ||
from typing import Callable | ||
import warnings | ||
from typing import Dict | ||
from typing import Optional | ||
|
||
from openapi_core.deserializing.media_types.datatypes import ( | ||
DeserializerCallable, | ||
) | ||
from openapi_core.deserializing.media_types.deserializers import ( | ||
BaseMediaTypeDeserializer, | ||
from openapi_core.deserializing.media_types.datatypes import ( | ||
MediaTypeDeserializersDict, | ||
) | ||
from openapi_core.deserializing.media_types.deserializers import ( | ||
CallableMediaTypeDeserializer, | ||
) | ||
from openapi_core.deserializing.media_types.deserializers import ( | ||
UnsupportedMimetypeDeserializer, | ||
) | ||
from openapi_core.deserializing.media_types.util import data_form_loads | ||
from openapi_core.deserializing.media_types.util import urlencoded_form_loads | ||
|
||
|
||
class MediaTypeDeserializersFactory: | ||
MEDIA_TYPE_DESERIALIZERS: Dict[str, DeserializerCallable] = { | ||
"application/json": loads, | ||
"application/x-www-form-urlencoded": urlencoded_form_loads, | ||
"multipart/form-data": data_form_loads, | ||
} | ||
|
||
def __init__( | ||
self, | ||
custom_deserializers: Optional[Dict[str, DeserializerCallable]] = None, | ||
media_type_deserializers: Optional[MediaTypeDeserializersDict] = None, | ||
custom_deserializers: Optional[MediaTypeDeserializersDict] = None, | ||
): | ||
if media_type_deserializers is None: | ||
media_type_deserializers = {} | ||
self.media_type_deserializers = media_type_deserializers | ||
if custom_deserializers is None: | ||
custom_deserializers = {} | ||
else: | ||
warnings.warn( | ||
"custom_deserializers is deprecated. " | ||
"Use extra_media_type_deserializers.", | ||
DeprecationWarning, | ||
) | ||
self.custom_deserializers = custom_deserializers | ||
|
||
def create(self, mimetype: str) -> BaseMediaTypeDeserializer: | ||
deserialize_callable = self.get_deserializer_callable(mimetype) | ||
|
||
if deserialize_callable is None: | ||
return UnsupportedMimetypeDeserializer(mimetype) | ||
def create( | ||
self, | ||
mimetype: str, | ||
extra_media_type_deserializers: Optional[ | ||
MediaTypeDeserializersDict | ||
] = None, | ||
) -> CallableMediaTypeDeserializer: | ||
if extra_media_type_deserializers is None: | ||
extra_media_type_deserializers = {} | ||
deserialize_callable = self.get_deserializer_callable( | ||
mimetype, | ||
extra_media_type_deserializers=extra_media_type_deserializers, | ||
) | ||
|
||
return CallableMediaTypeDeserializer(mimetype, deserialize_callable) | ||
|
||
def get_deserializer_callable( | ||
self, mimetype: str | ||
self, | ||
mimetype: str, | ||
extra_media_type_deserializers: MediaTypeDeserializersDict, | ||
) -> Optional[DeserializerCallable]: | ||
if mimetype in self.custom_deserializers: | ||
return self.custom_deserializers[mimetype] | ||
return self.MEDIA_TYPE_DESERIALIZERS.get(mimetype) | ||
if mimetype in extra_media_type_deserializers: | ||
return extra_media_type_deserializers[mimetype] | ||
return self.media_type_deserializers.get(mimetype) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.