@@ -281,23 +281,33 @@ def service_request_async(self, service, params, page_size=None, page=None, use_
281
281
if page_size is not None :
282
282
catalogs_request .append (('pagesize' , page_size ))
283
283
284
- # Updating syntax of sort_by inputs if sort direction
285
- # was specified
286
- if 'sort_by' in params .keys ():
287
- new_sort_by = []
288
- for item in params ['sort_by' ]:
289
- if item [0 ].lower () in ['asc' , 'desc' ]:
290
- new_sort_by .append (item [1 ] + '.' + item [0 ])
291
- params ['sort_by' ] = new_sort_by
292
-
293
284
if not use_json :
294
285
# Decompose filters, sort
295
286
for prop , value in kwargs .items ():
296
287
params [prop ] = value
297
288
catalogs_request .extend (self ._build_catalogs_params (params ))
298
289
else :
299
290
headers ['Content-Type' ] = 'application/json'
300
- catalogs_request = params
291
+
292
+ # Parameter syntax needs to be updated only for PANSTARRS catalog queries
293
+ if service .lower () == 'panstarrs' :
294
+ catalogs_request .extend (self ._build_catalogs_params (params ))
295
+
296
+ # After parameter syntax is updated, revert back to dictionary
297
+ # so params can be passed as a JSON dictionary
298
+ params_dict = {}
299
+ for key , val in catalogs_request :
300
+ params_dict .setdefault (key , []).append (val )
301
+ catalogs_request = params_dict
302
+
303
+ # Removing single-element lists. Single values will live on their own (except for `sort_by`)
304
+ for key in catalogs_request .keys ():
305
+ if (key != 'sort_by' ) & (len (catalogs_request [key ]) == 1 ):
306
+ catalogs_request [key ] = catalogs_request [key ][0 ]
307
+
308
+ # Otherwise, catalogs_request can remain as the original params dict
309
+ else :
310
+ catalogs_request = params
301
311
302
312
response = self ._request ('POST' , request_url , data = catalogs_request , headers = headers , use_json = use_json )
303
313
return response
@@ -327,7 +337,11 @@ def _build_catalogs_params(self, params):
327
337
# Loop through each value if list
328
338
if isinstance (value , list ):
329
339
for sort_item in value :
330
- catalog_params .append (('sort_by' , sort_item ))
340
+ # Determine if tuple with sort direction
341
+ if isinstance (sort_item , tuple ):
342
+ catalog_params .append (('sort_by' , sort_item [1 ] + '.' + sort_item [0 ]))
343
+ else :
344
+ catalog_params .append (('sort_by' , sort_item ))
331
345
else :
332
346
# A single sort
333
347
# Determine if tuple with sort direction
0 commit comments