Skip to content

Commit 9ce9760

Browse files
feat: Add support for cookie parameters
1 parent af09640 commit 9ce9760

19 files changed

+60
-18
lines changed

end_to_end_tests/golden-record/my_test_api_client/api/tests/defaults_tests_defaults_post.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def _get_kwargs(
2727
url = "{}/tests/defaults".format(client.base_url)
2828

2929
headers: Dict[str, Any] = client.get_headers()
30+
cookies: Dict[str, Any] = client.get_cookies()
3031

3132
json_datetime_prop: Union[Unset, str] = UNSET
3233
if not isinstance(datetime_prop, Unset):
@@ -90,7 +91,7 @@ def _get_kwargs(
9091
return {
9192
"url": url,
9293
"headers": headers,
93-
"cookies": client.get_cookies(),
94+
"cookies": cookies,
9495
"timeout": client.get_timeout(),
9596
"params": params,
9697
}

end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_booleans.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def _get_kwargs(
1313
url = "{}/tests/basic_lists/booleans".format(client.base_url)
1414

1515
headers: Dict[str, Any] = client.get_headers()
16+
cookies: Dict[str, Any] = client.get_cookies()
1617

1718
return {
1819
"url": url,
1920
"headers": headers,
20-
"cookies": client.get_cookies(),
21+
"cookies": cookies,
2122
"timeout": client.get_timeout(),
2223
}
2324

end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_floats.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def _get_kwargs(
1313
url = "{}/tests/basic_lists/floats".format(client.base_url)
1414

1515
headers: Dict[str, Any] = client.get_headers()
16+
cookies: Dict[str, Any] = client.get_cookies()
1617

1718
return {
1819
"url": url,
1920
"headers": headers,
20-
"cookies": client.get_cookies(),
21+
"cookies": cookies,
2122
"timeout": client.get_timeout(),
2223
}
2324

end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_integers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def _get_kwargs(
1313
url = "{}/tests/basic_lists/integers".format(client.base_url)
1414

1515
headers: Dict[str, Any] = client.get_headers()
16+
cookies: Dict[str, Any] = client.get_cookies()
1617

1718
return {
1819
"url": url,
1920
"headers": headers,
20-
"cookies": client.get_cookies(),
21+
"cookies": cookies,
2122
"timeout": client.get_timeout(),
2223
}
2324

end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_strings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def _get_kwargs(
1313
url = "{}/tests/basic_lists/strings".format(client.base_url)
1414

1515
headers: Dict[str, Any] = client.get_headers()
16+
cookies: Dict[str, Any] = client.get_cookies()
1617

1718
return {
1819
"url": url,
1920
"headers": headers,
20-
"cookies": client.get_cookies(),
21+
"cookies": cookies,
2122
"timeout": client.get_timeout(),
2223
}
2324

end_to_end_tests/golden-record/my_test_api_client/api/tests/get_user_list.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def _get_kwargs(
1919
url = "{}/tests/".format(client.base_url)
2020

2121
headers: Dict[str, Any] = client.get_headers()
22+
cookies: Dict[str, Any] = client.get_cookies()
2223

2324
json_an_enum_value = []
2425
for an_enum_value_item_data in an_enum_value:
@@ -39,7 +40,7 @@ def _get_kwargs(
3940
return {
4041
"url": url,
4142
"headers": headers,
42-
"cookies": client.get_cookies(),
43+
"cookies": cookies,
4344
"timeout": client.get_timeout(),
4445
"params": params,
4546
}

end_to_end_tests/golden-record/my_test_api_client/api/tests/int_enum_tests_int_enum_post.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def _get_kwargs(
1616
url = "{}/tests/int_enum".format(client.base_url)
1717

1818
headers: Dict[str, Any] = client.get_headers()
19+
cookies: Dict[str, Any] = client.get_cookies()
1920

2021
json_int_enum = int_enum.value
2122

@@ -26,7 +27,7 @@ def _get_kwargs(
2627
return {
2728
"url": url,
2829
"headers": headers,
29-
"cookies": client.get_cookies(),
30+
"cookies": cookies,
3031
"timeout": client.get_timeout(),
3132
"params": params,
3233
}

end_to_end_tests/golden-record/my_test_api_client/api/tests/json_body_tests_json_body_post.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ def _get_kwargs(
1616
url = "{}/tests/json_body".format(client.base_url)
1717

1818
headers: Dict[str, Any] = client.get_headers()
19+
cookies: Dict[str, Any] = client.get_cookies()
1920

2021
json_json_body = json_body.to_dict()
2122

2223
return {
2324
"url": url,
2425
"headers": headers,
25-
"cookies": client.get_cookies(),
26+
"cookies": cookies,
2627
"timeout": client.get_timeout(),
2728
"json": json_json_body,
2829
}

end_to_end_tests/golden-record/my_test_api_client/api/tests/no_response_tests_no_response_get.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def _get_kwargs(
1313
url = "{}/tests/no_response".format(client.base_url)
1414

1515
headers: Dict[str, Any] = client.get_headers()
16+
cookies: Dict[str, Any] = client.get_cookies()
1617

1718
return {
1819
"url": url,
1920
"headers": headers,
20-
"cookies": client.get_cookies(),
21+
"cookies": cookies,
2122
"timeout": client.get_timeout(),
2223
}
2324

end_to_end_tests/golden-record/my_test_api_client/api/tests/octet_stream_tests_octet_stream_get.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ def _get_kwargs(
1414
url = "{}/tests/octet_stream".format(client.base_url)
1515

1616
headers: Dict[str, Any] = client.get_headers()
17+
cookies: Dict[str, Any] = client.get_cookies()
1718

1819
return {
1920
"url": url,
2021
"headers": headers,
21-
"cookies": client.get_cookies(),
22+
"cookies": cookies,
2223
"timeout": client.get_timeout(),
2324
}
2425

end_to_end_tests/golden-record/my_test_api_client/api/tests/optional_value_tests_optional_query_param.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def _get_kwargs(
1515
url = "{}/tests/optional_query_param/".format(client.base_url)
1616

1717
headers: Dict[str, Any] = client.get_headers()
18+
cookies: Dict[str, Any] = client.get_cookies()
1819

1920
json_query_param: Union[Unset, List[Any]] = UNSET
2021
if not isinstance(query_param, Unset):
@@ -27,7 +28,7 @@ def _get_kwargs(
2728
return {
2829
"url": url,
2930
"headers": headers,
30-
"cookies": client.get_cookies(),
31+
"cookies": cookies,
3132
"timeout": client.get_timeout(),
3233
"params": params,
3334
}

end_to_end_tests/golden-record/my_test_api_client/api/tests/test_inline_objects.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ def _get_kwargs(
1616
url = "{}/tests/inline_objects".format(client.base_url)
1717

1818
headers: Dict[str, Any] = client.get_headers()
19+
cookies: Dict[str, Any] = client.get_cookies()
1920

2021
json_json_body = json_body.to_dict()
2122

2223
return {
2324
"url": url,
2425
"headers": headers,
25-
"cookies": client.get_cookies(),
26+
"cookies": cookies,
2627
"timeout": client.get_timeout(),
2728
"json": json_json_body,
2829
}

end_to_end_tests/golden-record/my_test_api_client/api/tests/unsupported_content_tests_unsupported_content_get.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ def _get_kwargs(
1313
url = "{}/tests/unsupported_content".format(client.base_url)
1414

1515
headers: Dict[str, Any] = client.get_headers()
16+
cookies: Dict[str, Any] = client.get_cookies()
1617

1718
return {
1819
"url": url,
1920
"headers": headers,
20-
"cookies": client.get_cookies(),
21+
"cookies": cookies,
2122
"timeout": client.get_timeout(),
2223
}
2324

end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ def _get_kwargs(
1717
url = "{}/tests/upload".format(client.base_url)
1818

1919
headers: Dict[str, Any] = client.get_headers()
20+
cookies: Dict[str, Any] = client.get_cookies()
2021

2122
if keep_alive is not UNSET:
2223
headers["keep-alive"] = keep_alive
2324

2425
return {
2526
"url": url,
2627
"headers": headers,
27-
"cookies": client.get_cookies(),
28+
"cookies": cookies,
2829
"timeout": client.get_timeout(),
2930
"files": multipart_data.to_dict(),
3031
}

openapi_python_client/parser/openapi.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ParameterLocation(str, Enum):
1919
QUERY = "query"
2020
PATH = "path"
2121
HEADER = "header"
22+
COOKIE = "cookie"
2223

2324

2425
def import_string_from_reference(reference: Reference, prefix: str = "") -> str:
@@ -93,6 +94,7 @@ class Endpoint:
9394
query_parameters: List[Property] = field(default_factory=list)
9495
path_parameters: List[Property] = field(default_factory=list)
9596
header_parameters: List[Property] = field(default_factory=list)
97+
cookie_parameters: List[Property] = field(default_factory=list)
9698
responses: List[Response] = field(default_factory=list)
9799
form_body_reference: Optional[Reference] = None
98100
json_body: Optional[Property] = None
@@ -214,6 +216,8 @@ def _add_parameters(
214216
endpoint.path_parameters.append(prop)
215217
elif param.param_in == ParameterLocation.HEADER:
216218
endpoint.header_parameters.append(prop)
219+
elif param.param_in == ParameterLocation.COOKIE:
220+
endpoint.cookie_parameters.append(prop)
217221
else:
218222
return ParseError(data=param, detail="Parameter must be declared in path or query"), schemas
219223
return endpoint, schemas

openapi_python_client/templates/endpoint_macros.py.jinja

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@ if {{ parameter.python_name }} is not UNSET:
1111
{% endif %}
1212
{% endmacro %}
1313

14+
{% macro cookie_params(endpoint) %}
15+
{% if endpoint.cookie_parameters %}
16+
{% for parameter in endpoint.cookie_parameters %}
17+
{% if parameter.required %}
18+
cookies["{{ parameter.python_name | kebabcase}}"] = {{ parameter.python_name }}
19+
{% else %}
20+
if {{ parameter.python_name }} is not UNSET:
21+
cookies["{{ parameter.python_name | kebabcase}}"] = {{ parameter.python_name }}
22+
{% endif %}
23+
{% endfor %}
24+
{% endif %}
25+
{% endmacro %}
26+
27+
1428
{% macro query_params(endpoint) %}
1529
{% if endpoint.query_parameters %}
1630
{% for property in endpoint.query_parameters %}
@@ -101,6 +115,10 @@ json_body: {{ endpoint.json_body.get_type_string() }},
101115
{% for parameter in endpoint.header_parameters %}
102116
{{ parameter.to_string() }},
103117
{% endfor %}
118+
{# cookie parameters #}
119+
{% for parameter in endpoint.cookie_parameters %}
120+
{{ parameter.to_string() }},
121+
{% endfor %}
104122
{% endmacro %}
105123

106124
{# Just lists all kwargs to endpoints as name=name for passing to other functions #}

openapi_python_client/templates/endpoint_module.py.jinja

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ from ...types import Response
1010
{{ relative }}
1111
{% endfor %}
1212

13-
{% from "endpoint_macros.py.jinja" import header_params, query_params, json_body, return_type, arguments, client, kwargs, parse_response %}
13+
{% from "endpoint_macros.py.jinja" import header_params, cookie_params, query_params, json_body, return_type, arguments, client, kwargs, parse_response %}
1414

1515
{% set return_string = return_type(endpoint) %}
1616
{% set parsed_responses = (endpoint.responses | length > 0) and return_string != "None" %}
@@ -26,17 +26,20 @@ def _get_kwargs(
2626
)
2727

2828
headers: Dict[str, Any] = client.get_headers()
29+
cookies: Dict[str, Any] = client.get_cookies()
2930

3031
{{ header_params(endpoint) | indent(4) }}
3132

33+
{{ cookie_params(endpoint) | indent(4) }}
34+
3235
{{ query_params(endpoint) | indent(4) }}
3336

3437
{{ json_body(endpoint) | indent(4) }}
3538

3639
return {
3740
"url": url,
3841
"headers": headers,
39-
"cookies": client.get_cookies(),
42+
"cookies": cookies,
4043
"timeout": client.get_timeout(),
4144
{% if endpoint.form_body_reference %}
4245
"data": asdict(form_data),

tests/test_parser/test_openapi.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,9 @@ def test__add_parameters_fail_loudly_when_location_not_supported(self, mocker):
444444
)
445445
parsed_schemas = mocker.MagicMock()
446446
mocker.patch(f"{MODULE_NAME}.property_from_data", return_value=(mocker.MagicMock(), parsed_schemas))
447-
param = oai.Parameter.construct(name="test", required=True, param_schema=mocker.MagicMock(), param_in="cookie")
447+
param = oai.Parameter.construct(
448+
name="test", required=True, param_schema=mocker.MagicMock(), param_in="error_location"
449+
)
448450
schemas = Schemas()
449451

450452
result = Endpoint._add_parameters(

tests/test_templates/endpoint_module.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ def _get_kwargs(
2020
url = "{}/post/".format(client.base_url)
2121

2222
headers: Dict[str, Any] = client.get_headers()
23+
cookies: Dict[str, Any] = client.get_cookies()
2324

2425
return {
2526
"url": url,
2627
"headers": headers,
27-
"cookies": client.get_cookies(),
28+
"cookies": cookies,
2829
"timeout": client.get_timeout(),
2930
"data": asdict(form_data),
3031
"files": multipart_data.to_dict(),

0 commit comments

Comments
 (0)