From a4a8b43c962d8fc798bd3fe3dfc26a40c42b209d Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke.madsen@geant.org> Date: Fri, 2 Jul 2021 13:17:03 +0200 Subject: [PATCH] refactor request wrapper for logging --- .../grafana/utils/request.py | 63 ++++++++----------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/brian_dashboard_manager/grafana/utils/request.py b/brian_dashboard_manager/grafana/utils/request.py index d55dc87..d1c5452 100644 --- a/brian_dashboard_manager/grafana/utils/request.py +++ b/brian_dashboard_manager/grafana/utils/request.py @@ -1,4 +1,8 @@ import requests +import logging +from requests.models import HTTPError + +logger = logging.getLogger(__name__) class Request(object): @@ -11,47 +15,34 @@ class Request(object): self.BASE_URL = url - def get(self, endpoint: str, headers=None, **kwargs): - - r = requests.get( - self.BASE_URL + endpoint, - headers={**headers, **self.headers} if headers else self.headers, - **kwargs - ) - r.raise_for_status() + def do_request(self, method, endpoint, *args, **kwargs): + r = requests.request(method, self.BASE_URL + endpoint, + *args, + **kwargs, + headers={ + **kwargs.get('headers', {}), + **self.headers + }) + + try: + r.raise_for_status() + except HTTPError as e: + if e.response.status_code < 500: + logger.error(e.response.content.decode('utf-8')) + raise e return r.json() - def post(self, endpoint: str, headers=None, **kwargs): + def get(self, endpoint: str, *args, **kwargs): + return self.do_request('get', endpoint, *args, **kwargs) - r = requests.post( - self.BASE_URL + endpoint, - headers={**headers, **self.headers} if headers else self.headers, - **kwargs - ) - r.raise_for_status() + def post(self, endpoint: str, data=None, **kwargs): + return self.do_request('post', endpoint, data=data, **kwargs) - return r.json() + def put(self, endpoint: str, **kwargs): + return self.do_request('put', endpoint, **kwargs) - def put(self, endpoint: str, headers=None, **kwargs): - - r = requests.put( - self.BASE_URL + endpoint, - headers={**headers, **self.headers} if headers else self.headers, - **kwargs - ) - r.raise_for_status() - return r.json() - - def delete(self, endpoint: str, headers=None, **kwargs): - - r = requests.delete( - self.BASE_URL + endpoint, - headers={**headers, **self.headers} if headers else self.headers, - **kwargs - ) - r.raise_for_status() - - return r.json() + def delete(self, endpoint: str, **kwargs): + return self.do_request('delete', endpoint, **kwargs) class AdminRequest(Request): -- GitLab