2
2
import logging
3
3
import warnings
4
4
5
- from openapi_core .exceptions import (
6
- EmptyValue , InvalidValueType , InvalidParameterValue ,
7
- )
8
5
from openapi_core .schema .parameters .enums import ParameterLocation , ParameterStyle
6
+ from openapi_core .schema .parameters .exceptions import (
7
+ MissingRequiredParameter , MissingParameter , InvalidParameterValue ,
8
+ EmptyParameterValue ,
9
+ )
9
10
from openapi_core .schema .schemas .enums import SchemaType
11
+ from openapi_core .schema .schemas .exceptions import InvalidSchemaValue
10
12
11
13
log = logging .getLogger (__name__ )
12
14
@@ -68,6 +70,27 @@ def deserialize(self, value):
68
70
deserializer = self .get_dererializer ()
69
71
return deserializer (value )
70
72
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
+
71
94
def unmarshal (self , value ):
72
95
if self .deprecated :
73
96
warnings .warn (
@@ -77,7 +100,7 @@ def unmarshal(self, value):
77
100
78
101
if (self .location == ParameterLocation .QUERY and value == "" and
79
102
not self .allow_empty_value ):
80
- raise EmptyValue (
103
+ raise EmptyParameterValue (
81
104
"Value of {0} parameter cannot be empty" .format (self .name ))
82
105
83
106
if not self .schema :
@@ -87,5 +110,5 @@ def unmarshal(self, value):
87
110
88
111
try :
89
112
return self .schema .unmarshal (deserialized )
90
- except InvalidValueType as exc :
113
+ except InvalidSchemaValue as exc :
91
114
raise InvalidParameterValue (str (exc ))
0 commit comments