genericize request methods in DrBotzoBackend

This commit is contained in:
Brian S. Stephan 2019-10-06 10:14:43 -05:00
parent cfb7cdf6b2
commit 5660af1614
1 changed files with 10 additions and 4 deletions

View File

@ -22,18 +22,24 @@ class DrBotzoError(requests.HTTPError):
class DrBotzoBackend(object):
"""Basic HTTP requests API, wrapped with some authentication and config stuff."""
def get(self, url, **kwargs):
return self.request('GET', url, **kwargs)
def post(self, url, **kwargs):
return self.request('POST', url, **kwargs)
def request(self, method, url, **kwargs):
"""Wrap requests.post with authentication and hostname settings."""
try:
response = requests.post(urljoin(config.DR_BOTZO_BACKEND_HOST, url),
auth=(config.DR_BOTZO_BACKEND_USER, config.DR_BOTZO_BACKEND_PASS), **kwargs)
response = requests.request(method, urljoin(config.DR_BOTZO_BACKEND_HOST, url),
auth=(config.DR_BOTZO_BACKEND_USER, config.DR_BOTZO_BACKEND_PASS), **kwargs)
response.raise_for_status()
return response
except requests.ConnectionError as cex:
logger.exception("received a connection error during POST %s", url)
logger.exception("received a connection error during %s %s", method, url)
raise DrBotzoError(cex, detail="A connection error occurred.")
except requests.HTTPError as httpex:
logger.exception("received an HTTP error during POST %s", url)
logger.exception("received an HTTP error during %s %s", method, url)
try:
detail = httpex.response.json()['detail']
raise DrBotzoError(httpex, detail=detail)