summaryrefslogtreecommitdiff
path: root/cdsapi/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'cdsapi/api.py')
-rw-r--r--cdsapi/api.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/cdsapi/api.py b/cdsapi/api.py
index 2bd5c14..5726489 100644
--- a/cdsapi/api.py
+++ b/cdsapi/api.py
@@ -109,7 +109,7 @@ class Result(object):
while tries < self.retry_max:
- r = self.robust(requests.get)(url,
+ r = self.robust(self.session.get)(url,
stream=True,
verify=self.verify,
headers=headers,
@@ -255,6 +255,7 @@ class Client(object):
debug_callback=None,
metadata=None,
forget=False,
+ session=requests.Session()
):
if not quiet:
@@ -305,7 +306,7 @@ class Client(object):
self.info_callback = info_callback
self.error_callback = error_callback
- self.session = requests.Session()
+ self.session = session
self.session.auth = tuple(self.key.split(':', 2))
self.metadata = metadata
@@ -331,10 +332,15 @@ class Client(object):
result.download(target)
return result
- def service(self, name, *args, **kwargs):
+ def service(self, name, *args, mimic_ui=False, **kwargs):
self.delete = False # Don't delete results
name = '/'.join(name.split('.'))
- request = dict(args=args, kwargs=kwargs)
+ # To mimic the CDS ui the request should be populated directly with the kwargs
+ if mimic_ui:
+ request = kwargs
+ else:
+ request = dict(args=args, kwargs=kwargs)
+
if self.metadata:
request['_cds_metadata'] = self.metadata
request = toJSON(request)
@@ -351,7 +357,7 @@ class Client(object):
def status(self, context=None):
url = '%s/status.json' % (self.url,)
- r = requests.get(url, verify=self.verify)
+ r = self.session.get(url, verify=self.verify)
r.raise_for_status()
return r.json()