Projet

Général

Profil

0001-strasbourg-eu-protect-against-service-errors-41149.patch

Frédéric Péters, 30 mars 2020 10:12

Télécharger (6,34 ko)

Voir les différences:

Subject: [PATCH] strasbourg eu: protect against service errors (#41149)

 passerelle/contrib/strasbourg_eu/models.py | 45 +++++++++++++++++-----
 1 file changed, 36 insertions(+), 9 deletions(-)
passerelle/contrib/strasbourg_eu/models.py
56 56
            if interests is None:
57 57
                interests = []  # reset
58 58
            url = urlparse.urljoin(self.liferay_api_url, 'jsonws/interest.interest/set-user-interests')
59
            response = self.requests.post(url, data={'userId': name_id, 'interestIds': ','.join(interests)}).json()
59
            try:
60
                response = self.requests.post(url, data={'userId': name_id, 'interestIds': ','.join(interests)}).json()
61
            except ValueError:
62
                return {'err': 2, 'err_desc': 'invalid service answer'}
60 63
            if 'error' in response:
61 64
                return {'err': 1, 'err_desc': response.get('error')}
62 65
        url = urlparse.urljoin(self.liferay_api_url, 'jsonws/interest.interest/get-interests')
63
        response = self.requests.get(url).json()
66
        try:
67
            response = self.requests.get(url).json()
68
        except ValueError:
69
            return {'err': 2, 'err_desc': 'invalid service answer'}
64 70
        interests = response.get('interests')
65 71
        if interests is None:
66 72
            return {'err': 1, 'err_desc': response.get('error')}
67 73
        if name_id is not None:
68 74
            url = urlparse.urljoin(self.liferay_api_url, 'jsonws/interest.interest/get-user-interests')
69
            user_choices = self.requests.post(url, data={'userId': name_id}).json().get('interests')
75
            try:
76
                user_choices = self.requests.post(url, data={'userId': name_id}).json().get('interests')
77
            except ValueError:
78
                return {'err': 2, 'err_desc': 'invalid service answer'}
70 79
            interests = [x for x in interests if x['id'] in user_choices]
71 80
        for interest in interests:
72 81
            interest['text'] = '%s / %s' % (interest['type'], interest['name'])
......
80 89
    def notifications(self, request, name_id, **kwargs):
81 90
        if request.method == 'GET':
82 91
            url = urlparse.urljoin(self.liferay_api_url, 'jsonws/notification.notification/get-user-notifications')
83
            notifications = self.requests.post(url, data={'userId': name_id}).json()
92
            try:
93
                notifications = self.requests.post(url, data={'userId': name_id}).json()
94
            except ValueError:
95
                return {'err': 2, 'err_desc': 'invalid service answer'}
84 96
            if 'error' in notifications:
85 97
                return {'err': 1, 'err_desc': notifications.get('error')}
86 98
            for notification in notifications['notifications']:
......
105 117
            notification = json_loads(request.body)
106 118
            notification['userId'] = name_id
107 119
            url = urlparse.urljoin(self.liferay_api_url, 'jsonws/notification.notification/add-notification')
108
            response = self.requests.post(url, data=notification).json()
120
            try:
121
                response = self.requests.post(url, data=notification).json()
122
            except ValueError:
123
                return {'err': 2, 'err_desc': 'invalid service answer'}
109 124
            if response.get('success'):
110 125
                return {'err': 0, 'err_desc': response.get('success')}
111 126
            else:
......
118 133
    def favorites(self, request, name_id, url_filter=None, **kwargs):
119 134
        if request.method == 'GET':
120 135
            url = urlparse.urljoin(self.liferay_api_url, 'jsonws/favorite.favorite/get-user-favorites')
121
            response = self.requests.post(url, data={'userId': name_id}).json()
136
            try:
137
                response = self.requests.post(url, data={'userId': name_id}).json()
138
            except ValueError:
139
                return {'err': 2, 'err_desc': 'invalid service answer'}
122 140
            if 'error' in response:
123 141
                return {'err': 1, 'err_desc': response.get('error')}
124 142
            favorites = response['favorites']
......
131 149
            favorite = json_loads(request.body)
132 150
            # change type to typeId
133 151
            types_url = urlparse.urljoin(self.liferay_api_url, 'jsonws/favorite.favorite/get-types')
134
            types = self.requests.get(types_url).json()
152
            try:
153
                types = self.requests.get(types_url).json()
154
            except ValueError:
155
                return {'err': 2, 'err_desc': 'invalid service answer'}
135 156
            # types: {"types": [{"id": "1", "name": "PLACE"}, ...]}
136 157
            types_dict = {x['name']: x['id'] for x in types['types']}
137 158
            favorite['typeId'] = types_dict.get(favorite.pop('type'))
138 159
            favorite['userId'] = name_id
139 160
            # send favorite
140 161
            url = urlparse.urljoin(self.liferay_api_url, 'jsonws/favorite.favorite/add-favorite')
141
            response = self.requests.post(url, data=favorite).json()
162
            try:
163
                response = self.requests.post(url, data=favorite).json()
164
            except ValueError:
165
                return {'err': 2, 'err_desc': 'invalid service answer'}
142 166
            if response.get('success'):
143 167
                return {'err': 0, 'err_desc': response.get('success')}
144 168
            else:
......
155 179
    def favorite_delete(self, request, name_id, favorite_id, **kwargs):
156 180
        url = urlparse.urljoin(self.liferay_api_url, 'jsonws/favorite.favorite/delete-favorite')
157 181
        params = {'userId': name_id, 'favoriteId': favorite_id}
158
        response = self.requests.post(url, data=params).json()
182
        try:
183
            response = self.requests.post(url, data=params).json()
184
        except ValueError:
185
            return {'err': 2, 'err_desc': 'invalid service answer'}
159 186
        if response.get('success'):
160 187
            return {'err': 0, 'err_desc': response.get('success')}
161 188
        else:
162
-