12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import requests
- from xml.etree import ElementTree
- from requests_oauthlib import OAuth1
- BASE_URL = 'http://kitdm.anka.kit.edu:8080/KITDM/rest'
- KEY = 'secret'
- SECRET = 'secret'
- TOKEN = 'KeQL6nNBv8qsnFVb'
- TOKEN_SECRET = '6JyJaO5TrkMK92dU'
- class Error(Exception):
- pass
- class PermissionError(Error):
- pass
- class NotFoundError(Error):
- pass
- class ArbitraryError(Error):
- pass
- class Object(object):
- def __init__(self, root):
- self.identifier = root.find('./entities/entity/digitalObjectIdentifier').text
- self.note = root.find('./entities/entity/note').text
- class Client(object):
- def __init__(self, base_url=BASE_URL, key=KEY, secret=SECRET,
- token=TOKEN, token_secret=TOKEN_SECRET):
- self.auth = OAuth1(KEY, SECRET, TOKEN, TOKEN_SECRET)
- self.base_url = base_url
- 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'))
- def get_object(self, oid):
- url = '{}/basemetadata/digitalObjects/{}'.format(self.base_url, oid)
- return Object(self.get_response(url))
- def get_response(self, url):
- response = requests.get(url, auth=self.auth)
- if response.status_code == 403:
- raise PermissionError()
- elif response.status_code == 404:
- raise NotFoundError()
- elif response.status_code != 200:
- raise ArbitraryError()
- return ElementTree.fromstring(response.text)
|