|
13 | 13 | from datetime import datetime
|
14 | 14 | from logging import getLogger
|
15 | 15 |
|
| 16 | +import requests |
| 17 | + |
16 | 18 | from . import exceptions
|
17 | 19 | from .decorators import requires_auth
|
18 | 20 | from .null import NullObject
|
@@ -176,27 +178,38 @@ def _boolean(self, response, true_code, false_code):
|
176 | 178 | raise exceptions.error_for(response)
|
177 | 179 | return False
|
178 | 180 |
|
| 181 | + def _request(self, method, *args, **kwargs): |
| 182 | + try: |
| 183 | + request_method = getattr(self.session, method) |
| 184 | + return request_method(*args, **kwargs) |
| 185 | + except (requests.exceptions.ConnectionError, |
| 186 | + requests.exceptions.Timeout, |
| 187 | + ) as exc: |
| 188 | + raise exceptions.ConnectionError(exc) |
| 189 | + except requests.exceptions.RequestException as exc: |
| 190 | + raise exceptions.TransportError(exc) |
| 191 | + |
179 | 192 | def _delete(self, url, **kwargs):
|
180 | 193 | __logs__.debug('DELETE %s with %s', url, kwargs)
|
181 |
| - return self.session.delete(url, **kwargs) |
| 194 | + return self._request('delete', url, **kwargs) |
182 | 195 |
|
183 | 196 | def _get(self, url, **kwargs):
|
184 | 197 | __logs__.debug('GET %s with %s', url, kwargs)
|
185 |
| - return self.session.get(url, **kwargs) |
| 198 | + return self._request('get', url, **kwargs) |
186 | 199 |
|
187 | 200 | def _patch(self, url, **kwargs):
|
188 | 201 | __logs__.debug('PATCH %s with %s', url, kwargs)
|
189 |
| - return self.session.patch(url, **kwargs) |
| 202 | + return self._request('patch', url, **kwargs) |
190 | 203 |
|
191 | 204 | def _post(self, url, data=None, json=True, **kwargs):
|
192 | 205 | if json:
|
193 | 206 | data = dumps(data) if data is not None else data
|
194 | 207 | __logs__.debug('POST %s with %s, %s', url, data, kwargs)
|
195 |
| - return self.session.post(url, data, **kwargs) |
| 208 | + return self._request('post', url, data, **kwargs) |
196 | 209 |
|
197 | 210 | def _put(self, url, **kwargs):
|
198 | 211 | __logs__.debug('PUT %s with %s', url, kwargs)
|
199 |
| - return self.session.put(url, **kwargs) |
| 212 | + return self._request('put', url, **kwargs) |
200 | 213 |
|
201 | 214 | def _build_url(self, *args, **kwargs):
|
202 | 215 | """Builds a new API url from scratch."""
|
|
0 commit comments