Skip to content

Commit d369e8f

Browse files
committed
Force strings for multi-part upload at client level
1 parent 08c1af9 commit d369e8f

File tree

3 files changed

+29
-25
lines changed

3 files changed

+29
-25
lines changed

composer.lock

Lines changed: 17 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/python/package/client.py.twig

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class Client:
4949
data = {}
5050
json = {}
5151
files = {}
52+
stringify = False
5253

5354
headers = {**self._global_headers, **headers}
5455

@@ -62,7 +63,7 @@ class Client:
6263

6364
if headers['content-type'].startswith('multipart/form-data'):
6465
del headers['content-type']
65-
66+
stringify = True
6667
for key in data.copy():
6768
if isinstance(data[key], InputFile):
6869
files[key] = (data[key].name, data[key].file)
@@ -72,7 +73,7 @@ class Client:
7273
response = requests.request( # call method dynamically https://stackoverflow.com/a/4246075/2299554
7374
method=method,
7475
url=self._endpoint + path,
75-
params=self.flatten(params),
76+
params=self.flatten(params, stringify=stringify),
7677
data=self.flatten(data),
7778
json=json,
7879
files=files,
@@ -152,7 +153,7 @@ class Client:
152153

153154
return result
154155

155-
def flatten(self, data, prefix=''):
156+
def flatten(self, data, prefix='', stringify=False):
156157
output = {}
157158
i = 0
158159

@@ -163,9 +164,12 @@ class Client:
163164
i += 1
164165

165166
if isinstance(value, list) or isinstance(value, dict):
166-
output = {**output, **self.flatten(value, finalKey)}
167+
output = {**output, **self.flatten(value, finalKey, stringify)}
167168
else:
168-
output[finalKey] = value
169+
if stringify:
170+
output[finalKey] = str(value)
171+
else:
172+
output[finalKey] = value
169173

170174
return output
171175

templates/python/package/services/service.py.twig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@ class {{ service.name | caseUcfirst }}(Service):
2727

2828
{% for parameter in method.parameters.query %}
2929
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
30-
params['{{ parameter.name }}'] = {% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}'true' if {{ parameter.name | escapeKeyword | caseSnake }} else 'false'{% else %}{{ parameter.name | escapeKeyword | caseSnake }}{% endif %}
30+
params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
3131

3232
{% endfor %}
3333
{% for parameter in method.parameters.body %}
3434
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
35-
params['{{ parameter.name }}'] = {% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}'true' if {{ parameter.name | escapeKeyword | caseSnake }} else 'false'{% else %}{{ parameter.name | escapeKeyword | caseSnake }}{% endif %}
35+
params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
3636

3737
{% endfor %}
3838
{% for parameter in method.parameters.formData %}
3939
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
40-
params['{{ parameter.name }}'] = {% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}'true' if {{ parameter.name | escapeKeyword | caseSnake }} else 'false'{% else %}{{ parameter.name | escapeKeyword | caseSnake }}{% endif %}
40+
params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
4141

4242
{% endfor %}
4343
{% if 'multipart/form-data' in method.consumes %}

0 commit comments

Comments
 (0)