Skip to content

Commit a619805

Browse files
Updating async_request to handle booleans consistent to the sync api.
1 parent 4ed01c7 commit a619805

1 file changed

Lines changed: 41 additions & 18 deletions

File tree

jigsawstack/async_request.py

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,27 @@ def __init__(
3636
self.disable_request_logging = config.get("disable_request_logging")
3737
self.stream = stream
3838

39+
def __convert_params(self, params: Union[Dict[Any, Any], List[Dict[Any, Any]]]) -> Dict[str, str]:
40+
"""
41+
Convert parameters to string values for URL encoding.
42+
"""
43+
if params is None:
44+
return {}
45+
46+
if isinstance(params, str):
47+
return params
48+
49+
if isinstance(params, list):
50+
return {} # List params are only used in JSON body
51+
52+
converted = {}
53+
for key, value in params.items():
54+
if isinstance(value, bool):
55+
converted[key] = str(value).lower()
56+
else:
57+
converted[key] = str(value)
58+
return converted
59+
3960
async def perform(self) -> Union[T, None]:
4061
"""
4162
Async method to make an HTTP request to the JigsawStack API.
@@ -196,34 +217,36 @@ async def perform_with_content_streaming(
196217
async def make_request(
197218
self, session: aiohttp.ClientSession, url: str
198219
) -> aiohttp.ClientResponse:
199-
"""
200-
Make the actual async HTTP request.
201-
202-
Args:
203-
session (aiohttp.ClientSession): The client session
204-
url (str): The URL to make the request to
205-
206-
Returns:
207-
aiohttp.ClientResponse: The response object from the request
208-
"""
209220
headers = self.__get_headers()
210-
params = self.params
211221
verb = self.verb
212222
data = self.data
213223

214-
request_params = None if verb.lower() not in ["get", "delete"] else params
224+
# Convert params to string values for URL encoding
225+
converted_params = self.__convert_params(self.params)
215226

216-
try:
227+
if verb.lower() in ["get", "delete"]:
217228
return await session.request(
218229
verb,
219230
url,
220-
params=request_params,
221-
json=params,
231+
params=converted_params,
222232
headers=headers,
223-
data=data,
224233
)
225-
except aiohttp.ClientError as e:
226-
raise e
234+
else:
235+
if data is not None:
236+
return await session.request(
237+
verb,
238+
url,
239+
data=data,
240+
params=converted_params, # Use converted params
241+
headers=headers,
242+
)
243+
else:
244+
return await session.request(
245+
verb,
246+
url,
247+
json=self.params, # Keep JSON body as original
248+
headers=headers,
249+
)
227250

228251
def __get_session(self) -> aiohttp.ClientSession:
229252
"""

0 commit comments

Comments
 (0)