Fix URL services

This commit is contained in:
Mauricio Baeza 2021-08-18 22:18:41 -05:00
parent bf816d2e35
commit f2be1661ab
3 changed files with 62 additions and 3 deletions

View File

@ -1,3 +1,4 @@
# acloud-cli
Versión CLI para los servicios de Atian Cloud
Versión CLI para los servicios de [Astian Cloud](https://acloud.astian.org/register)

View File

@ -16,8 +16,10 @@
# ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
import logging
import httpx
import requests
LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s'
@ -37,6 +39,16 @@ class ACloudServer(object):
def __init__(self, server, version='v1'):
self._server = f'{server}/api/{version}'
self._token = ''
self._error = ''
self._status = 0
@property
def error(self):
return self._error
@property
def status(self):
return self._status
@property
def token(self):
@ -45,8 +57,28 @@ class ACloudServer(object):
def token(self, value):
self._token = value
def login(self, user, contra):
data = {'email': user, 'password': contra, 'token_name': 'token'}
def _post(self, method, data):
headers = {
'Authorization': f'Bearer {self.token}',
'accept': 'application/json'}
url = f'{self._server}/{method}'
result = httpx.post(url, data=data, headers=headers)
self._status = result.status_code
return result.json()
def _delete(self, method, params):
headers = {
'Authorization': f'Bearer {self.token}',
'accept': 'application/json',
'Content-Type': 'application/json',
}
url = f'{self._server}/{method}'
response = requests.delete(url, headers=headers, json=params)
self._status = response.status_code
return response.json()
def login(self, user, contra, token_name='token'):
data = {'email': user, 'password': contra, 'token_name': token_name}
result = httpx.post(f'{self._server}/auth/login', data=data)
if result.status_code == 422:
return False
@ -55,3 +87,27 @@ class ACloudServer(object):
self._token = data['user']['access_token']
return result.status_code == 200
def folder_create(self, name, id_parent=0):
self._error = ''
id = None
data = {'name': name, 'parentID': id_parent}
data = self._post('folders', data=data)
if self.status == 200:
id = data['folder']['id']
else:
self._error = data['errors']
log.error(self._error)
return id
def delete(self, ids, delete_forever=False):
if isinstance(ids, int):
ids = [ids]
result = True
params = {'entryIds': ids, 'deleteForever': delete_forever}
data = self._delete('entries', params)
if self.status != 200:
self._error = data['errors']
log.error(self._error)
result = False
return result

View File

@ -32,6 +32,8 @@ class TestApiCloud(unittest.TestCase):
result = self.server.folder_create(folder_name)
self.assertEqual(expected, type(result))
print(result)
expected = True
result = self.server.delete(result, True)
self.assertEqual(expected, result)