@@ -77,7 +77,7 @@ async def all_collections( # noqa: C901
77
77
"query" : orjson .loads (unquote_plus (query )) if query else query ,
78
78
}
79
79
80
- clean_args = clean_search_args (
80
+ clean_args = self . _clean_search_args (
81
81
base_args = base_args ,
82
82
datetime = datetime ,
83
83
fields = fields ,
@@ -484,7 +484,7 @@ async def get_search(
484
484
"query" : orjson .loads (unquote_plus (query )) if query else query ,
485
485
}
486
486
487
- clean = clean_search_args (
487
+ clean = self . _clean_search_args (
488
488
base_args = base_args ,
489
489
intersects = intersects ,
490
490
datetime = datetime ,
@@ -504,61 +504,61 @@ async def get_search(
504
504
505
505
return await self .post_search (search_request , request = request )
506
506
507
+ def _clean_search_args ( # noqa: C901
508
+ self ,
509
+ base_args : Dict [str , Any ],
510
+ intersects : Optional [str ] = None ,
511
+ datetime : Optional [DateTimeType ] = None ,
512
+ fields : Optional [List [str ]] = None ,
513
+ sortby : Optional [str ] = None ,
514
+ filter_query : Optional [str ] = None ,
515
+ filter_lang : Optional [str ] = None ,
516
+ ) -> Dict [str , Any ]:
517
+ """Clean up search arguments to match format expected by pgstac"""
518
+ if filter_query :
519
+ if filter_lang == "cql2-text" :
520
+ filter_query = to_cql2 (parse_cql2_text (filter_query ))
521
+ filter_lang = "cql2-json"
507
522
508
- def clean_search_args ( # noqa: C901
509
- base_args : Dict [str , Any ],
510
- intersects : Optional [str ] = None ,
511
- datetime : Optional [DateTimeType ] = None ,
512
- fields : Optional [List [str ]] = None ,
513
- sortby : Optional [str ] = None ,
514
- filter_query : Optional [str ] = None ,
515
- filter_lang : Optional [str ] = None ,
516
- ) -> Dict [str , Any ]:
517
- """Clean up search arguments to match format expected by pgstac"""
518
- if filter_query :
519
- if filter_lang == "cql2-text" :
520
- filter_query = to_cql2 (parse_cql2_text (filter_query ))
521
- filter_lang = "cql2-json"
522
-
523
- base_args ["filter" ] = orjson .loads (filter_query )
524
- base_args ["filter_lang" ] = filter_lang
525
-
526
- if datetime :
527
- base_args ["datetime" ] = format_datetime_range (datetime )
528
-
529
- if intersects :
530
- base_args ["intersects" ] = orjson .loads (unquote_plus (intersects ))
531
-
532
- if sortby :
533
- # https://github.com/radiantearth/stac-spec/tree/master/api-spec/extensions/sort#http-get-or-post-form
534
- sort_param = []
535
- for sort in sortby :
536
- sortparts = re .match (r"^([+-]?)(.*)$" , sort )
537
- if sortparts :
538
- sort_param .append (
539
- {
540
- "field" : sortparts .group (2 ).strip (),
541
- "direction" : "desc" if sortparts .group (1 ) == "-" else "asc" ,
542
- }
543
- )
544
- base_args ["sortby" ] = sort_param
545
-
546
- if fields :
547
- includes = set ()
548
- excludes = set ()
549
- for field in fields :
550
- if field [0 ] == "-" :
551
- excludes .add (field [1 :])
552
- elif field [0 ] == "+" :
553
- includes .add (field [1 :])
554
- else :
555
- includes .add (field )
556
- base_args ["fields" ] = {"include" : includes , "exclude" : excludes }
557
-
558
- # Remove None values from dict
559
- clean = {}
560
- for k , v in base_args .items ():
561
- if v is not None and v != []:
562
- clean [k ] = v
563
-
564
- return clean
523
+ base_args ["filter" ] = orjson .loads (filter_query )
524
+ base_args ["filter_lang" ] = filter_lang
525
+
526
+ if datetime :
527
+ base_args ["datetime" ] = format_datetime_range (datetime )
528
+
529
+ if intersects :
530
+ base_args ["intersects" ] = orjson .loads (unquote_plus (intersects ))
531
+
532
+ if sortby :
533
+ # https://github.com/radiantearth/stac-spec/tree/master/api-spec/extensions/sort#http-get-or-post-form
534
+ sort_param = []
535
+ for sort in sortby :
536
+ sortparts = re .match (r"^([+-]?)(.*)$" , sort )
537
+ if sortparts :
538
+ sort_param .append (
539
+ {
540
+ "field" : sortparts .group (2 ).strip (),
541
+ "direction" : "desc" if sortparts .group (1 ) == "-" else "asc" ,
542
+ }
543
+ )
544
+ base_args ["sortby" ] = sort_param
545
+
546
+ if fields :
547
+ includes = set ()
548
+ excludes = set ()
549
+ for field in fields :
550
+ if field [0 ] == "-" :
551
+ excludes .add (field [1 :])
552
+ elif field [0 ] == "+" :
553
+ includes .add (field [1 :])
554
+ else :
555
+ includes .add (field )
556
+ base_args ["fields" ] = {"include" : includes , "exclude" : excludes }
557
+
558
+ # Remove None values from dict
559
+ clean = {}
560
+ for k , v in base_args .items ():
561
+ if v is not None and v != []:
562
+ clean [k ] = v
563
+
564
+ return clean
0 commit comments