Skip to content

Commit

Permalink
fix(core): handle list url params (#309)
Browse files Browse the repository at this point in the history
  • Loading branch information
quantumsheep authored Sep 25, 2023
1 parent 8fd47e7 commit 677e5f1
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions scaleway-core/scaleway_core/api.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import json
import logging
from dataclasses import dataclass
from typing import IO, Any, Dict, Iterable, Mapping, Optional, Tuple, Union
from typing import IO, Any, Dict, Iterable, List, Mapping, Optional, Tuple, Union

import requests
from requests import Response

from .client import Client


Body = Union[
str, bytes, Mapping[str, Any], Iterable[Tuple[str, Optional[str]]], IO[Any]
]
Expand All @@ -26,14 +25,14 @@ def log_request(
self,
method: str,
url: str,
params: Dict[str, Optional[str]],
params: List[Tuple[str, Any]],
headers: Dict[str, str],
body: Optional[str],
) -> None:
if not self.logger.isEnabledFor(logging.DEBUG):
return

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

debug_headers = {
**headers,
Expand Down Expand Up @@ -129,7 +128,16 @@ def _request(

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

params = {k: str(v) for k, v in params.items() if v is not None}
request_params: List[Tuple[str, Any]] = []
for k, v in params.items():
if v is None:
continue

if isinstance(v, list):
for item in v:
request_params.append((k, item))
else:
request_params.append((k, v))

headers = {
"accept": "application/json",
Expand All @@ -146,15 +154,15 @@ def _request(
logger.log_request(
method=method,
url=url,
params=params,
params=request_params,
headers=headers,
body=raw_body,
)

response = requests.request(
method=method,
url=url,
params=params,
params=request_params,
headers=headers,
data=raw_body,
verify=not self.client.api_allow_insecure,
Expand Down

0 comments on commit 677e5f1

Please sign in to comment.