Capture network errors

This commit is contained in:
Mauricio Baeza 2021-09-07 23:07:17 -05:00
parent 8113a622d8
commit b8b9d9f715
1 changed files with 40 additions and 21 deletions

View File

@ -19,6 +19,7 @@
import json
import logging
import requests
from requests.exceptions import ConnectionError, Timeout
LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s'
@ -35,6 +36,9 @@ STATUS = {
'OK': 200,
'INVALID': 422,
}
METHODS = {
'AUTH': 'auth/login',
}
class ACloudServer(object):
@ -60,19 +64,37 @@ class ACloudServer(object):
def token(self, value):
self._token = value
def _post(self, method, data):
headers = {
'Authorization': f'Bearer {self.token}',
'accept': 'application/json'
}
def _post(self, method, data, headers={}):
if not headers:
headers = {
'Authorization': f'Bearer {self.token}',
'accept': 'application/json',
}
url = f'{self._server}/{method}'
result = requests.post(url, data=data, headers=headers)
try:
response = requests.post(url, data=data, headers=headers, timeout=TIMEOUT)
except ConnectionError:
self._error = 'ConnectionError'
log.error('ConnectionError')
except Timeout:
self._error = 'Timeout'
log.error('Timeout')
print(1, result.status_code)
print(2, result)
if self.error:
return
self._status = result.status_code
return result.json()
self._status = response.status_code
data = response.json()
# ~ log.debug(data)
if self.status == STATUS['OK']:
return data
if self.status == STATUS['INVALID']:
self._error = data['errors']
log.error(self.error)
return
def _delete(self, method, params):
headers = {
@ -86,18 +108,15 @@ class ACloudServer(object):
return response.json()
def login(self, user, contra, token_name='token'):
data = {'email': user, 'password': contra, 'token_name': token_name}
result = requests.post(f'{self._server}/auth/login', data=data)
data = {
'email': user,
'password': contra,
'token_name': token_name
}
headers = {'accept': 'application/json'}
data = self._post(METHODS['AUTH'], data, headers)
data = result.json()
if result.status_code == STATUS['INVALID']:
self._error = data['errors']
log.error(self.error)
return False
if result.status_code != STATUS['OK']:
self._error = data['errors']
log.error(self.error)
if self.error:
return False
self._token = data['user']['access_token']