mirror of
https://github.com/correl/openapi-core.git
synced 2024-11-25 03:00:11 +00:00
27 lines
988 B
Python
27 lines
988 B
Python
|
from openapi_core.deserializing.exceptions import DeserializeError
|
||
|
from openapi_core.deserializing.parameters.exceptions import (
|
||
|
EmptyParameterValue,
|
||
|
)
|
||
|
from openapi_core.schema.parameters.enums import ParameterLocation
|
||
|
from openapi_core.schema.schemas.types import NoValue
|
||
|
|
||
|
|
||
|
class PrimitiveDeserializer(object):
|
||
|
|
||
|
def __init__(self, param, deserializer_callable):
|
||
|
self.param = param
|
||
|
self.deserializer_callable = deserializer_callable
|
||
|
|
||
|
def __call__(self, value):
|
||
|
if (self.param.location == ParameterLocation.QUERY and value == "" and
|
||
|
not self.param.allow_empty_value):
|
||
|
raise EmptyParameterValue(
|
||
|
value, self.param.style, self.param.name)
|
||
|
|
||
|
if not self.param.aslist or self.param.explode:
|
||
|
return value
|
||
|
try:
|
||
|
return self.deserializer_callable(value)
|
||
|
except (ValueError, TypeError, AttributeError) as exc:
|
||
|
raise DeserializeError(value, self.param.style)
|