forked from openapi-generators/openapi-python-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathendpoint_macros.pyi
127 lines (122 loc) · 4.02 KB
/
endpoint_macros.pyi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{% macro header_params(endpoint) %}
{% if endpoint.header_parameters %}
{% for parameter in endpoint.header_parameters %}
{% if parameter.required %}
headers["{{ parameter.python_name | kebabcase}}"] = {{ parameter.python_name }}
{% else %}
if {{ parameter.python_name }} is not UNSET:
headers["{{ parameter.python_name | kebabcase}}"] = {{ parameter.python_name }}
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}
{% macro query_params(endpoint) %}
{% if endpoint.query_parameters %}
{% for property in endpoint.query_parameters %}
{% set destination = "json_" + property.python_name %}
{% if property.template %}
{% from "property_templates/" + property.template import transform %}
{{ transform(property, property.python_name, destination) }}
{% endif %}
{% endfor %}
params: Dict[str, Any] = {
{% for property in endpoint.query_parameters %}
{% if property.required %}
{% if property.template %}
"{{ property.name }}": {{ "json_" + property.python_name }},
{% else %}
"{{ property.name }}": {{ property.python_name }},
{% endif %}
{% endif %}
{% endfor %}
}
{% for property in endpoint.query_parameters %}
{% if not property.required %}
if {{ property.python_name }} is not UNSET:
{% if property.template %}
params["{{ property.name }}"] = {{ "json_" + property.python_name }}
{% else %}
params["{{ property.name }}"] = {{ property.python_name }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}
{% macro json_body(endpoint) %}
{% if endpoint.json_body %}
{% set property = endpoint.json_body %}
{% set destination = "json_" + property.python_name %}
{% if property.template %}
{% from "property_templates/" + property.template import transform %}
{{ transform(property, property.python_name, destination) }}
{% endif %}
{% endif %}
{% endmacro %}
{% macro return_type(endpoint) %}
{% if endpoint.responses | length == 0 %}
None
{%- elif endpoint.responses | length == 1 %}
{{ endpoint.responses[0].prop.get_type_string() }}
{%- else %}
Union[
{% for response in endpoint.responses %}
{{ response.prop.get_type_string() }}{{ "," if not loop.last }}
{% endfor %}
]
{%- endif %}
{% endmacro %}
{# The all the kwargs passed into an endpoint (and variants thereof)) #}
{% macro arguments(endpoint) %}
*,
{# Proper client based on whether or not the endpoint requires authentication #}
{% if endpoint.requires_security %}
client: AuthenticatedClient,
{% else %}
client: Client,
{% endif %}
{# path parameters #}
{% for parameter in endpoint.path_parameters %}
{{ parameter.to_string() }},
{% endfor %}
{# Form data if any #}
{% if endpoint.form_body_reference %}
form_data: {{ endpoint.form_body_reference.class_name }},
{% endif %}
{# Multipart data if any #}
{% if endpoint.multipart_body_reference %}
multipart_data: {{ endpoint.multipart_body_reference.class_name }},
{% endif %}
{# JSON body if any #}
{% if endpoint.json_body %}
json_body: {{ endpoint.json_body.get_type_string() }},
{% endif %}
{# query parameters #}
{% for parameter in endpoint.query_parameters %}
{{ parameter.to_string() }},
{% endfor %}
{% for parameter in endpoint.header_parameters %}
{{ parameter.to_string() }},
{% endfor %}
{% endmacro %}
{# Just lists all kwargs to endpoints as name=name for passing to other functions #}
{% macro kwargs(endpoint) %}
client=client,
{% for parameter in endpoint.path_parameters %}
{{ parameter.python_name }}={{ parameter.python_name }},
{% endfor %}
{% if endpoint.form_body_reference %}
form_data=form_data,
{% endif %}
{% if endpoint.multipart_body_reference %}
multipart_data=multipart_data,
{% endif %}
{% if endpoint.json_body %}
json_body=json_body,
{% endif %}
{% for parameter in endpoint.query_parameters %}
{{ parameter.python_name }}={{ parameter.python_name }},
{% endfor %}
{% for parameter in endpoint.header_parameters %}
{{ parameter.python_name }}={{ parameter.python_name }},
{% endfor %}
{% endmacro %}