|
@@ -73,44 +73,38 @@ class Client(object):
|
|
|
self.base_url = base_url
|
|
|
self.log = logging.getLogger(__name__)
|
|
|
|
|
|
+ def url(self, *args):
|
|
|
+ return '/'.join([self.base_url] + [str(arg) for arg in args])
|
|
|
+
|
|
|
def get_user_credentials(self, ldap_id):
|
|
|
- url = '{}/information/properties'.format(self.base_url)
|
|
|
- root = self.get_response(url, userId=ldap_id)
|
|
|
+ root = self.get_response(self.url('information/properties'), userId=ldap_id)
|
|
|
return Credentials(root)
|
|
|
|
|
|
def get_download_ids(self, limit=None):
|
|
|
- results = '?results={}'.format(limit) if limit else ''
|
|
|
- url = '{}/staging/downloads/{}'.format(self.base_url, results)
|
|
|
- root = self.get_response(url)
|
|
|
- return (int(e.text) for e in root.findall('./entities/entity/id'))
|
|
|
+ return self.get_collection('staging/downloads', 'id', limit)
|
|
|
|
|
|
def get_download(self, oid):
|
|
|
- url = '{}/staging/downloads/{}'.format(self.base_url, oid)
|
|
|
- return Download(self.get_response(url))
|
|
|
+ return Download(self.get_response(self.url('staging/downloads', oid)))
|
|
|
|
|
|
def get_ingest_ids(self, limit=None):
|
|
|
- results = '?results={}'.format(limit) if limit else ''
|
|
|
- url = '{}/staging/ingests/{}'.format(self.base_url, results)
|
|
|
- root = self.get_response(url)
|
|
|
- return (int(e.text) for e in root.findall('./entities/entity/id'))
|
|
|
+ return self.get_collection('staging/ingests', 'id', limit)
|
|
|
|
|
|
def get_ingest(self, oid):
|
|
|
- url = '{}/staging/ingests/{}'.format(self.base_url, oid)
|
|
|
- return Ingest(self.get_response(url))
|
|
|
+ return Ingest(self.get_response(self.url('staging/ingests', oid)))
|
|
|
|
|
|
def get_object_ids(self, limit=None, since=None):
|
|
|
- results = '?results={}'.format(limit) if limit else ''
|
|
|
- url = '{}/basemetadata/digitalObjects/{}'.format(self.base_url, results)
|
|
|
- root = self.get_response(url)
|
|
|
- return (int(e.text) for e in root.findall('./entities/entity/baseId'))
|
|
|
+ return self.get_collection('basemetadata/digitalObjects', 'baseId', limit)
|
|
|
|
|
|
def get_object(self, oid):
|
|
|
- url = '{}/basemetadata/digitalObjects/{}'.format(self.base_url, oid)
|
|
|
- return Object(self.get_response(url))
|
|
|
+ return Object(self.get_response(self.url('basemetadata/digitalObjects', oid)))
|
|
|
|
|
|
def get_organization(self, oid):
|
|
|
- url = '{}/dataorganization/organization/{}'.format(self.base_url, oid)
|
|
|
- return Organization(self.get_response(url))
|
|
|
+ return Organization(self.get_response(self.url('dataorganization/organization', oid)))
|
|
|
+
|
|
|
+ def get_collection(self, url, id_name, limit=None):
|
|
|
+ params = {'results': limit} if limit else {}
|
|
|
+ root = self.get_response(self.url(url), **params)
|
|
|
+ return (int(e.text) for e in root.findall('./entities/entity/{}'.format(id_name)))
|
|
|
|
|
|
def get_response(self, url, **params):
|
|
|
self.log.debug("Accessing {}".format(url))
|