@@ -439,6 +439,14 @@ def _fabric_request(self, method, url, params=None, data=None, headers=None,
439
439
response .raise_for_status ()
440
440
return [response ]
441
441
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
+
442
450
def _request (self , method , url , params = None , data = None , headers = None ,
443
451
files = None , stream = False , auth = None , retrieve_all = True ):
444
452
"""
@@ -624,7 +632,7 @@ def logout(self): # pragma: no cover
624
632
self ._authenticated = False
625
633
626
634
@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 ):
628
636
"""
629
637
Given a Mashup service and parameters, builds and excecutes a Mashup query.
630
638
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
644
652
Default None.
645
653
Can be used to override the default behavior of all results being returned to obtain
646
654
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.
647
659
**kwargs :
648
660
See MashupRequest properties
649
661
`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
683
695
mashup_request [prop ] = value
684
696
685
697
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 )
688
700
689
701
return response
690
702
@@ -1177,7 +1189,7 @@ def query_object_async(self, objectname, radius=0.2*u.deg, pagesize=None, page=N
1177
1189
return self .query_region_async (coordinates , radius , pagesize , page )
1178
1190
1179
1191
@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 ):
1181
1193
"""
1182
1194
Given an set of criteria, returns a list of MAST observations.
1183
1195
Valid criteria are returned by ``get_metadata("observations")``
@@ -1190,6 +1202,10 @@ def query_criteria_async(self, pagesize=None, page=None, **criteria):
1190
1202
page : int, optional
1191
1203
Can be used to override the default behavior of all results being returned to obtain
1192
1204
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.
1193
1209
**criteria
1194
1210
Criteria to apply. At least one non-positional criteria must be supplied.
1195
1211
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):
1274
1290
params = {"columns" : "*" ,
1275
1291
"filters" : mashup_filters }
1276
1292
1277
- return self .service_request_async (service , params )
1293
+ return self .service_request_async (service , params , cache = cache , cache_opts = cache_opts )
1278
1294
1279
1295
def query_region_count (self , coordinates , radius = 0.2 * u .deg , pagesize = None , page = None ):
1280
1296
"""
0 commit comments