11"""OpenAPI core parameters module"""
22import logging
3+ import warnings
4+
5+ from openapi_core .exceptions import EmptyValue
36
47log = logging .getLogger (__name__ )
58
@@ -8,20 +11,32 @@ class Parameter(object):
811 """Represents an OpenAPI operation Parameter."""
912
1013 def __init__ (
11- self , name , location , schema = None , default = None ,
12- required = False , deprecated = False , allow_empty_value = False ,
14+ self , name , location , schema = None , required = False ,
15+ deprecated = False , allow_empty_value = False ,
1316 items = None , collection_format = None ):
1417 self .name = name
1518 self .location = location
1619 self .schema = schema
17- self .default = default
18- self .required = required
20+ self .required = True if self .location == "path" else required
1921 self .deprecated = deprecated
20- self .allow_empty_value = allow_empty_value
22+ self .allow_empty_value = (
23+ allow_empty_value if self .location == "query" else False
24+ )
2125 self .items = items
2226 self .collection_format = collection_format
2327
2428 def unmarshal (self , value ):
29+ if self .deprecated :
30+ warnings .warn (
31+ "{0} parameter is deprecated" .format (self .name ),
32+ DeprecationWarning ,
33+ )
34+
35+ if (self .location == "query" and value == "" and
36+ not self .allow_empty_value ):
37+ raise EmptyValue (
38+ "Value of {0} parameter cannot be empty." .format (self .name ))
39+
2540 if not self .schema :
2641 return value
2742
@@ -38,7 +53,7 @@ def generate(self, paramters):
3853 for parameter in paramters :
3954 parameter_deref = self .dereferencer .dereference (parameter )
4055
41- default = parameter_deref .get ('default ' )
56+ allow_empty_value = parameter_deref .get ('allowEmptyValue ' )
4257 required = parameter_deref .get ('required' , False )
4358
4459 schema_spec = parameter_deref .get ('schema' , None )
@@ -50,6 +65,7 @@ def generate(self, paramters):
5065 parameter_deref ['name' ],
5166 Parameter (
5267 parameter_deref ['name' ], parameter_deref ['in' ],
53- schema = schema , default = default , required = required ,
68+ schema = schema , required = required ,
69+ allow_empty_value = allow_empty_value ,
5470 ),
5571 )
0 commit comments