22import logging
33import warnings
44
5- from openapi_core .exceptions import (
6- EmptyValue , InvalidValueType , InvalidParameterValue ,
7- )
85from openapi_core .schema .parameters .enums import ParameterLocation , ParameterStyle
6+ from openapi_core .schema .parameters .exceptions import (
7+ MissingRequiredParameter , MissingParameter , InvalidParameterValue ,
8+ EmptyParameterValue ,
9+ )
910from openapi_core .schema .schemas .enums import SchemaType
11+ from openapi_core .schema .schemas .exceptions import InvalidSchemaValue
1012
1113log = logging .getLogger (__name__ )
1214
@@ -68,6 +70,27 @@ def deserialize(self, value):
6870 deserializer = self .get_dererializer ()
6971 return deserializer (value )
7072
73+ def get_value (self , request ):
74+ location = request .parameters [self .location .value ]
75+
76+ try :
77+ raw = location [self .name ]
78+ except KeyError :
79+ if self .required :
80+ raise MissingRequiredParameter (
81+ "Missing required `{0}` parameter" .format (self .name ))
82+
83+ if not self .schema or self .schema .default is None :
84+ raise MissingParameter (
85+ "Missing `{0}` parameter" .format (self .name ))
86+
87+ raw = self .schema .default
88+
89+ if self .aslist and self .explode :
90+ return location .getlist (self .name )
91+
92+ return raw
93+
7194 def unmarshal (self , value ):
7295 if self .deprecated :
7396 warnings .warn (
@@ -77,7 +100,7 @@ def unmarshal(self, value):
77100
78101 if (self .location == ParameterLocation .QUERY and value == "" and
79102 not self .allow_empty_value ):
80- raise EmptyValue (
103+ raise EmptyParameterValue (
81104 "Value of {0} parameter cannot be empty" .format (self .name ))
82105
83106 if not self .schema :
@@ -87,5 +110,5 @@ def unmarshal(self, value):
87110
88111 try :
89112 return self .schema .unmarshal (deserialized )
90- except InvalidValueType as exc :
113+ except InvalidSchemaValue as exc :
91114 raise InvalidParameterValue (str (exc ))
0 commit comments