@@ -439,6 +439,14 @@ def _fabric_request(self, method, url, params=None, data=None, headers=None,
439439 response .raise_for_status ()
440440 return [response ]
441441
442+ def _request_w_cache (self , method , url , data = None , headers = None , retrieve_all = True ,
443+ cache = False , cache_opts = None ):
444+ # TODO: implement caching
445+ # Note: the method only exposes 4 parameters of the underlying _request() function
446+ # to play nice with existing mocks
447+ response = self ._request (method , url , data = data , headers = headers , retrieve_all = retrieve_all )
448+ return response
449+
442450 def _request (self , method , url , params = None , data = None , headers = None ,
443451 files = None , stream = False , auth = None , retrieve_all = True ):
444452 """
@@ -624,7 +632,7 @@ def logout(self): # pragma: no cover
624632 self ._authenticated = False
625633
626634 @class_or_instance
627- def service_request_async (self , service , params , pagesize = None , page = None , ** kwargs ):
635+ def service_request_async (self , service , params , pagesize = None , page = None , cache = False , cache_opts = None , ** kwargs ):
628636 """
629637 Given a Mashup service and parameters, builds and excecutes a Mashup query.
630638 See documentation `here <https://mast.stsci.edu/api/v0/class_mashup_1_1_mashup_request.html>`__
@@ -644,6 +652,10 @@ def service_request_async(self, service, params, pagesize=None, page=None, **kwa
644652 Default None.
645653 Can be used to override the default behavior of all results being returned to obtain
646654 a specific page of results.
655+ cache : Boolean, optional
656+ try to use cached the query result if set to True
657+ cache_opts : dict, optional
658+ cache options, details TBD, e.g., cache expiration policy, etc.
647659 **kwargs :
648660 See MashupRequest properties
649661 `here <https://mast.stsci.edu/api/v0/class_mashup_1_1_mashup_request.html>`__
@@ -683,8 +695,8 @@ def service_request_async(self, service, params, pagesize=None, page=None, **kwa
683695 mashup_request [prop ] = value
684696
685697 req_string = _prepare_service_request_string (mashup_request )
686- response = self ._request ("POST" , self ._MAST_REQUEST_URL , data = req_string , headers = headers ,
687- retrieve_all = retrieve_all )
698+ response = self ._request_w_cache ("POST" , self ._MAST_REQUEST_URL , data = req_string , headers = headers ,
699+ retrieve_all = retrieve_all , cache = cache , cache_opts = cache_opts )
688700
689701 return response
690702
@@ -1177,7 +1189,7 @@ def query_object_async(self, objectname, radius=0.2*u.deg, pagesize=None, page=N
11771189 return self .query_region_async (coordinates , radius , pagesize , page )
11781190
11791191 @class_or_instance
1180- def query_criteria_async (self , pagesize = None , page = None , ** criteria ):
1192+ def query_criteria_async (self , pagesize = None , page = None , cache = False , cache_opts = None , ** criteria ):
11811193 """
11821194 Given an set of criteria, returns a list of MAST observations.
11831195 Valid criteria are returned by ``get_metadata("observations")``
@@ -1190,6 +1202,10 @@ def query_criteria_async(self, pagesize=None, page=None, **criteria):
11901202 page : int, optional
11911203 Can be used to override the default behavior of all results being returned to obtain
11921204 one sepcific page of results.
1205+ cache : Boolean, optional
1206+ try to use cached the query result if set to True
1207+ cache_opts : dict, optional
1208+ cache options, details TBD, e.g., cache expiration policy, etc.
11931209 **criteria
11941210 Criteria to apply. At least one non-positional criteria must be supplied.
11951211 Valid criteria are coordinates, objectname, radius (as in `query_region` and `query_object`),
@@ -1274,7 +1290,7 @@ def query_criteria_async(self, pagesize=None, page=None, **criteria):
12741290 params = {"columns" : "*" ,
12751291 "filters" : mashup_filters }
12761292
1277- return self .service_request_async (service , params )
1293+ return self .service_request_async (service , params , cache = cache , cache_opts = cache_opts )
12781294
12791295 def query_region_count (self , coordinates , radius = 0.2 * u .deg , pagesize = None , page = None ):
12801296 """
0 commit comments