From 77f37ad9274e28ad0f5d7280e1733a3d18367998 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sun, 11 Aug 2019 16:54:46 +0200 Subject: [PATCH] arpege_ecp: do not log requests errors (#35358) Add proper conversion of all HTTP errors to APIError. --- passerelle/apps/arpege_ecp/models.py | 31 +++++++++++++++++++--------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/passerelle/apps/arpege_ecp/models.py b/passerelle/apps/arpege_ecp/models.py index 31c216e3..7f7f64eb 100644 --- a/passerelle/apps/arpege_ecp/models.py +++ b/passerelle/apps/arpege_ecp/models.py @@ -17,6 +17,8 @@ import json import urlparse +from requests import RequestException + from django.db import models from django.utils.translation import ugettext_lazy as _ from django.utils.dateparse import parse_date, parse_time @@ -29,6 +31,8 @@ from passerelle.utils.jsonresponse import APIError class ArpegeECP(BaseResource): + log_requests_errors = False + category = _('Business Process Connectors') webservice_base_url = models.URLField(_('Webservice Base URL')) hawk_auth_id = models.CharField(_('Hawk Authentication id'), max_length=64) @@ -39,22 +43,27 @@ class ArpegeECP(BaseResource): def check_status(self): url = urlparse.urljoin(self.webservice_base_url, 'Hello') - response = self.requests.get(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key)) - response.raise_for_status() + try: + response = self.requests.get(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key)) + response.raise_for_status() + except RequestException as e: + raise Exception('Arpege server is down: %s' % e) if not response.json().get('Data'): raise Exception('Invalid credentials') return {'data': response.json()['Data']} def get_access_token(self, NameID): url = urlparse.urljoin(self.webservice_base_url, 'LoginParSubOIDC') - response = self.requests.post(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key), - json={'subOIDC': NameID}) - if response.status_code // 100 != 2: - raise APIError(u'HTTP error: %s' % response.status_code) + try: + response = self.requests.post(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key), + json={'subOIDC': NameID}) + response.raise_for_status() + except RequestException as e: + raise APIError(u'Arpege server is down: %s' % e) try: result = response.json() except ValueError: - raise APIError(u'No JSON content returned: %r' % response.content[:1000]) + raise APIError(u'Arpege server is down: no JSON content returned, %r' % response.content[:1000]) if result.get('Data'): if 'AccessToken' not in result['Data']: raise APIError(u'Error on LoginParSubOIDC: missing Data/AccessToken') @@ -69,10 +78,12 @@ class ArpegeECP(BaseResource): url = urlparse.urljoin(self.webservice_base_url, 'DemandesUsager') params = {'scope': 'data_administratives'} auth = HawkAuth(self.hawk_auth_id, self.hawk_auth_key, ext=access_token) - response = self.requests.get(url, params=params, auth=auth) + try: + response = self.requests.get(url, params=params, auth=auth) + response.raise_for_status() + except RequestException as e: + raise APIError(u'Arpege server is down: %s' % e) data = [] - if response.status_code // 100 != 2: - raise APIError(u'HTTP error: %s' % response.status_code) try: result = response.json() except ValueError: -- 2.23.0.rc1