Skip to content

Commit 677e5f1

Browse files
authored
fix(core): handle list url params (#309)
1 parent 8fd47e7 commit 677e5f1

File tree

1 file changed

+15
-7
lines changed
  • scaleway-core/scaleway_core

1 file changed

+15
-7
lines changed

scaleway-core/scaleway_core/api.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import json
22
import logging
33
from dataclasses import dataclass
4-
from typing import IO, Any, Dict, Iterable, Mapping, Optional, Tuple, Union
4+
from typing import IO, Any, Dict, Iterable, List, Mapping, Optional, Tuple, Union
55

66
import requests
77
from requests import Response
88

99
from .client import Client
1010

11-
1211
Body = Union[
1312
str, bytes, Mapping[str, Any], Iterable[Tuple[str, Optional[str]]], IO[Any]
1413
]
@@ -26,14 +25,14 @@ def log_request(
2625
self,
2726
method: str,
2827
url: str,
29-
params: Dict[str, Optional[str]],
28+
params: List[Tuple[str, Any]],
3029
headers: Dict[str, str],
3130
body: Optional[str],
3231
) -> None:
3332
if not self.logger.isEnabledFor(logging.DEBUG):
3433
return
3534

36-
raw_params = "&".join([f"{k}={v}" for k, v in params.items()])
35+
raw_params = "&".join([f"{k}={v}" for (k, v) in params])
3736

3837
debug_headers = {
3938
**headers,
@@ -129,7 +128,16 @@ def _request(
129128

130129
raw_body = json.dumps(body) if body is not None else None
131130

132-
params = {k: str(v) for k, v in params.items() if v is not None}
131+
request_params: List[Tuple[str, Any]] = []
132+
for k, v in params.items():
133+
if v is None:
134+
continue
135+
136+
if isinstance(v, list):
137+
for item in v:
138+
request_params.append((k, item))
139+
else:
140+
request_params.append((k, v))
133141

134142
headers = {
135143
"accept": "application/json",
@@ -146,15 +154,15 @@ def _request(
146154
logger.log_request(
147155
method=method,
148156
url=url,
149-
params=params,
157+
params=request_params,
150158
headers=headers,
151159
body=raw_body,
152160
)
153161

154162
response = requests.request(
155163
method=method,
156164
url=url,
157-
params=params,
165+
params=request_params,
158166
headers=headers,
159167
data=raw_body,
160168
verify=not self.client.api_allow_insecure,

0 commit comments

Comments
 (0)