@@ -37,6 +37,7 @@ def __init__(self, route, mode=CMR_OPS):
3737 self ._route = route
3838 self .mode (mode )
3939 self .concept_id_chars = []
40+ self .headers = None
4041
4142 def get (self , limit = 2000 ):
4243 """
@@ -53,7 +54,7 @@ def get(self, limit=2000):
5354 page = 1
5455 while len (results ) < limit :
5556
56- response = get (url , params = {'page_size' : page_size , 'page_num' : page })
57+ response = get (url , headers = self . headers , params = {'page_size' : page_size , 'page_num' : page })
5758
5859 try :
5960 response .raise_for_status ()
@@ -83,7 +84,7 @@ def hits(self):
8384
8485 url = self ._build_url ()
8586
86- response = get (url , params = {'page_size' : 0 })
87+ response = get (url , headers = self . headers , params = {'page_size' : 0 })
8788
8889 try :
8990 response .raise_for_status ()
@@ -273,18 +274,35 @@ def mode(self, mode=CMR_OPS):
273274
274275 def token (self , token ):
275276 """
276- Add token into url request .
277+ Add token into authorization headers .
277278
278- :param token: Token from EDL.
279+ :param token: Token from EDL Echo-Token or NASA Launchpad token .
279280 :returns: Query instance
280281 """
281282
282283 if not token :
283284 return self
284285
285- self .params ['token' ] = token
286+ self .headers = {'Authorization' : token }
287+
286288 return self
287289
290+ def bearer_token (self , bearer_token ):
291+ """
292+ Add token into authorization headers.
293+
294+ :param token: Token from EDL token.
295+ :returns: Query instance
296+ """
297+
298+ if not bearer_token :
299+ return self
300+
301+ self .headers = {'Authorization' : 'Bearer ' + bearer_token }
302+
303+ return self
304+
305+
288306class GranuleCollectionBaseQuery (Query ):
289307 """
290308 Base class for Granule and Collection CMR queries.
@@ -417,6 +435,18 @@ def point(self, lon, lat):
417435
418436 return self
419437
438+ def circle (self , lon : float , lat : float , dist : int ):
439+ """Filter by granules within the circle around lat/lon
440+
441+ :param lon: longitude of geographic point
442+ :param lat: latitude of geographic point
443+ :param dist: distance in meters around waypoint (lat,lon)
444+ :returns: Query instance
445+ """
446+ self .params ['circle' ] = f"{ lon } ,{ lat } ,{ dist } "
447+
448+ return self
449+
420450 def polygon (self , coordinates ):
421451 """
422452 Filter by granules that overlap a polygonal area. Must be used in combination with a
0 commit comments