def _apirequest(self, method, url, *args, **kwargs):
"""
General request-response processing routine for dpr-api server.
:return:
Response -- requests.Response instance
"""
# TODO: doing this for every request is kinda awkward
self._ensure_config()
if not url.startswith('http'):
# Relative url is given. Build absolute server url
url = self.server + url
methods = {
'POST': requests.post,
'PUT': requests.put,
'GET': requests.get,
'DELETE': requests.delete
}
headers = kwargs.pop('headers', {})
if self.token:
headers.setdefault('Auth-Token', '%s' % self.token)
response = methods.get(method)(url, *args, headers=headers, **kwargs)
try:
jsonresponse = response.json()
except Exception as e:
six.raise_from(
JSONDecodeError(response, message='Failed to decode JSON response from server'), e)
if response.status_code not in (200, 201):
raise HTTPStatusError(response, message='Error %s\n%s' % (
response.status_code,
jsonresponse.get('message') or jsonresponse.get('description')))
return response
评论列表
文章目录