@@ -18,10 +18,13 @@ def rule_to_path(rule):
18
18
DEFAULT_TYPE = ('string' , None )
19
19
20
20
21
- def rule_to_params (rule , overrides = None ):
21
+ def rule_to_params (rule , overrides = None , * , major_api_version = 2 ):
22
22
overrides = (overrides or {})
23
23
result = [
24
- argument_to_param (argument , rule , overrides .get (argument , {}))
24
+ argument_to_param (
25
+ argument , rule ,
26
+ overrides .get (argument , {}),
27
+ major_api_version = major_api_version )
25
28
for argument in rule .arguments
26
29
]
27
30
for key in overrides .keys ():
@@ -30,17 +33,25 @@ def rule_to_params(rule, overrides=None):
30
33
result .append (overrides [key ])
31
34
return result
32
35
33
- def argument_to_param (argument , rule , override = None ):
36
+
37
+ def argument_to_param (argument , rule , override = None , * , major_api_version = 2 ):
34
38
param = {
35
39
'in' : 'path' ,
36
40
'name' : argument ,
37
41
'required' : True ,
38
42
}
39
43
type_ , format_ = CONVERTER_MAPPING .get (type (rule ._converters [argument ]), DEFAULT_TYPE )
40
- param ['type' ] = type_
44
+ schema = {}
45
+ schema ['type' ] = type_
41
46
if format_ is not None :
42
- param ['format' ] = format_
47
+ schema ['format' ] = format_
43
48
if rule .defaults and argument in rule .defaults :
44
49
param ['default' ] = rule .defaults [argument ]
50
+ if major_api_version == 2 :
51
+ param .update (schema )
52
+ elif major_api_version == 3 :
53
+ param ['schema' ] = schema
54
+ else :
55
+ raise NotImplementedError ("No support for OpenAPI / Swagger Major version {}" .format (major_api_version ))
45
56
param .update (override or {})
46
57
return param
0 commit comments