Projet

Général

Profil

0001-arpege_ecp-do-not-log-requests-errors-35358.patch

Benjamin Dauvergne, 11 août 2019 17:02

Télécharger (3,75 ko)

Voir les différences:

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(-)
passerelle/apps/arpege_ecp/models.py
17 17
import json
18 18
import urlparse
19 19

  
20
from requests import RequestException
21

  
20 22
from django.db import models
21 23
from django.utils.translation import ugettext_lazy as _
22 24
from django.utils.dateparse import parse_date, parse_time
......
29 31

  
30 32

  
31 33
class ArpegeECP(BaseResource):
34
    log_requests_errors = False
35

  
32 36
    category = _('Business Process Connectors')
33 37
    webservice_base_url = models.URLField(_('Webservice Base URL'))
34 38
    hawk_auth_id = models.CharField(_('Hawk Authentication id'), max_length=64)
......
39 43

  
40 44
    def check_status(self):
41 45
        url = urlparse.urljoin(self.webservice_base_url, 'Hello')
42
        response = self.requests.get(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key))
43
        response.raise_for_status()
46
        try:
47
            response = self.requests.get(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key))
48
            response.raise_for_status()
49
        except RequestException as e:
50
            raise Exception('Arpege server is down: %s' % e)
44 51
        if not response.json().get('Data'):
45 52
            raise Exception('Invalid credentials')
46 53
        return {'data': response.json()['Data']}
47 54

  
48 55
    def get_access_token(self, NameID):
49 56
        url = urlparse.urljoin(self.webservice_base_url, 'LoginParSubOIDC')
50
        response = self.requests.post(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key),
51
                                      json={'subOIDC': NameID})
52
        if response.status_code // 100 != 2:
53
            raise APIError(u'HTTP error: %s' % response.status_code)
57
        try:
58
            response = self.requests.post(url, auth=HawkAuth(self.hawk_auth_id, self.hawk_auth_key),
59
                                          json={'subOIDC': NameID})
60
            response.raise_for_status()
61
        except RequestException as e:
62
            raise APIError(u'Arpege server is down: %s' % e)
54 63
        try:
55 64
            result = response.json()
56 65
        except ValueError:
57
            raise APIError(u'No JSON content returned: %r' % response.content[:1000])
66
            raise APIError(u'Arpege server is down: no JSON content returned, %r' % response.content[:1000])
58 67
        if result.get('Data'):
59 68
            if 'AccessToken' not in result['Data']:
60 69
                raise APIError(u'Error on LoginParSubOIDC: missing Data/AccessToken')
......
69 78
        url = urlparse.urljoin(self.webservice_base_url, 'DemandesUsager')
70 79
        params = {'scope': 'data_administratives'}
71 80
        auth = HawkAuth(self.hawk_auth_id, self.hawk_auth_key, ext=access_token)
72
        response = self.requests.get(url, params=params, auth=auth)
81
        try:
82
            response = self.requests.get(url, params=params, auth=auth)
83
            response.raise_for_status()
84
        except RequestException as e:
85
            raise APIError(u'Arpege server is down: %s' % e)
73 86
        data = []
74
        if response.status_code // 100 != 2:
75
            raise APIError(u'HTTP error: %s' % response.status_code)
76 87
        try:
77 88
            result = response.json()
78 89
        except ValueError:
79
-