Необходимо реализовать клиент к предлагаемому api не используя фреймворк. Все запросы к интеграции необходимо производить при помощи aiohttp (
https://docs.aiohttp.org/en/stable/client.html).
Также необходимо реализовать unit тесты к клиенту.
Результат работы выложить на github(с названием репозитория test task - ваше имя).
Легенда
Надо написать клиент к
http://testapi.ru который позволяет запросить и обновить данные пользователя в сторонней системе. Также необходимо реализовать использование этого клиента, где:
- мы запрашиваем данные пользователя,
- затем мы изменяем у него некоторые учетные данные (имя , флаг блокировки и его права) и используем клиент для отправки результата.
Авторизация
Для работы с api необходимо изначально произвести авторизацию по адресу
http://testapi.ru/auth* метод GET
* параметры login и pass
* где login=test, pass=12345
результатом будет json в котором будет содержаться token
ответ:
{
"status": "OK",
"token": "dsfd79843r32d1d3dx23d32d"
}
Получение данных пользователя
Так же api предоставляет возможность получения данные пользователя по адресу
http://testapi.ru/get-user/<username>?token=<token>
* метод GET
* username = ivanov
* token = токен полученный при авторизации
результатом будет json в котором будет содержать данные пользователь
ответ:
{
"status": "OK",
"active": "1",
"blocked": false,
"created_at": 1587457590,
"id": 23,
"name": "Ivanov Ivan",
"permissions": [
{
"id": 1,
"permission": "comment"
},
{
"id": 2,
"permission": "upload photo"
},
{
"id": 3,
"permission": "add event"
}
]
}
Отправка данных пользователя
И api предоставляет возможность обновить данные пользователя по адресу
http://testapi.ru/user/<user-id>/update?token=<token>
* метод POST
* тело запроса
{
"active": "1",
"blocked": true,
"name": "Petr Petrovich",
"permissions": [
{
"id": 1,
"permission": "comment"
},
]
}
Ответ:
{
"status": "OK",
}
Для каждого запроса Помимо стандартных HTTP кодов ответа есть еще дополнительный параметр "status" который сигнализирует нам об успешности операции:
* Ok - успешно
* Not found - пользователь не найден
* Error - ошибка