@@ -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