@@ -269,34 +269,27 @@ async def all_collections(
269269 request = kwargs ["request" ]
270270 base_url = str (request .base_url )
271271
272- # Get the global limit from environment variable
273- global_limit = None
274- env_limit = os .getenv ("STAC_ITEM_LIMIT" )
275- if env_limit :
276- try :
277- global_limit = int (env_limit )
278- except ValueError :
279- # Handle invalid integer in environment variable
280- pass
281-
282- # Apply global limit if it exists
283- if global_limit is not None :
284- # If a limit was provided, use the smaller of the two
285- if limit is not None :
286- limit = min (limit , global_limit )
287- else :
288- limit = global_limit
272+ global_max_limit = int (os .getenv ("STAC_COLLECTION_GLOBAL_MAX_LIMIT" , 300 ))
273+ default_limit = int (os .getenv ("STAC_DEFAULT_COLLECTION_LIMIT" , 10 ))
274+ query_limit = request .query_params .get ("limit" )
275+
276+ body_limit = None
277+ try :
278+ if request .method == "POST" and request .body ():
279+ body_data = await request .json ()
280+ body_limit = body_data .get ("limit" )
281+ except :
282+ pass
283+
284+ if body_limit is not None :
285+ limit = int (body_limit )
286+ elif query_limit :
287+ limit = int (query_limit )
289288 else :
290- # No global limit, use provided limit or default
291- if limit is None :
292- query_limit = request .query_params .get ("limit" )
293- if query_limit :
294- try :
295- limit = int (query_limit )
296- except ValueError :
297- limit = 10
298- else :
299- limit = 10
289+ limit = default_limit
290+
291+ if global_max_limit > 0 :
292+ limit = min (limit , global_max_limit )
300293
301294 token = request .query_params .get ("token" )
302295
@@ -660,7 +653,17 @@ async def get_search(
660653 Raises:
661654 HTTPException: If any error occurs while searching the catalog.
662655 """
663- limit = int (request .query_params .get ("limit" , os .getenv ("STAC_ITEM_LIMIT" , 10 )))
656+ global_max_limit = int (os .getenv ("STAC_ITEM_GLOBAL_MAX_LIMIT" , 300 ))
657+ default_limit = int (os .getenv ("STAC_DEFAULT_ITEM_LIMIT" , 100 ))
658+
659+ query_limit = request .query_params .get ("limit" )
660+ if query_limit :
661+ limit = int (query_limit )
662+ else :
663+ limit = default_limit
664+
665+ if global_max_limit > 0 :
666+ limit = min (limit , global_max_limit )
664667
665668 base_args = {
666669 "collections" : collections ,
0 commit comments