@@ -77,7 +77,7 @@ async def all_collections( # noqa: C901
7777 "query" : orjson .loads (unquote_plus (query )) if query else query ,
7878 }
7979
80- clean_args = clean_search_args (
80+ clean_args = self . _clean_search_args (
8181 base_args = base_args ,
8282 datetime = datetime ,
8383 fields = fields ,
@@ -484,7 +484,7 @@ async def get_search(
484484 "query" : orjson .loads (unquote_plus (query )) if query else query ,
485485 }
486486
487- clean = clean_search_args (
487+ clean = self . _clean_search_args (
488488 base_args = base_args ,
489489 intersects = intersects ,
490490 datetime = datetime ,
@@ -504,61 +504,61 @@ async def get_search(
504504
505505 return await self .post_search (search_request , request = request )
506506
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"
507522
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