Skip to content

Aetton/test_case

Repository files navigation

asyncio JSON exchange server

Тестовый сервер для асинхронного обмена JSON

Обмен данными происходит по идентификатору получателя. При отправке данных на сервер они хранятся и отображаются в течении часа, после чего удаляются. Реализован на базе aiohttp + sqlite3.

Взаимодействие

Адрес Описание
POST /api/<ид. получателя> Отправка данных на сервер
GET /api/<ид. получателя > Получение списка отправленных ранее данных

Сценарий общей работы системы

При звонке в IVR подтягивается из некой сторонней базы основная информация об абоненте, после чего передаётся в другую базу при постановке абонента в очередь к операторам. Панель оператора шлёт GET и подхватывает все необходимые данные для работы с клиентом. Если между GET и POST прошло больше часа, возвращается ошибка со статусом 400.

Поля в таблице users:

Поле Формат Описание
id VARCHAR(20) PRIMARY KEY ID абонента. Допустимые символы: латиница, цифры, нижнее подчеркивание. Во входящем JSON не передаётся
date DATETIME Дата добавления данных в базу. Может использоваться для определения, когда абонент упал в очередь на оператора. Генерируется при запросе, во входящем JSON не передаётся
name VARCHAR(50) ФИО абонента. На данный момент только латиница, т.к. при добавлении в базу идут проблемы с кодировкой. Разберусь – будет кириллица
phone VARCHAR(10) Телефон абонента в 10-значном формате
arpu INT ARPU – средние затраты абонента за месяц. Обычно используется для определения платежной категории абонента. Значение в копейках. Целое число
soc_tariff VARCHAR (10) Идентификатор(SOC) тарифа, подключенного у абонента

Пример входящего POST:

POST   http://localhost:8080/api/test_id/
Content-Type: application/json; charset=utf-8
{
  "name": "John Doe",
  "phone": "9156685347",
  "arpu": "4570",
  "soc_tariff": "TESTSOC"
}

Ответ:

Status: 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 16
Date: Sun, 02 Apr 2017 21:36:08 GMT
Server: Python/3.5 aiohttp/2.0.5
{
  "result": "OK"
}

Пример входящего GET

GET   http://localhost:8080/api/test_id/

Ответ:

Status: 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 139
Date: Sun, 02 Apr 2017 21:39:22 GMT
Server: Python/3.5 aiohttp/2.0.5
{
  "date": "2017-04-03 00:59:53.667318",
  "id": "test_id",
  "arpu": "4570",
  "name": "John Doe",
  "soc_tariff": "TESTSOC",
  "phone": "9156685347"
}

Отдельные компоненты

settings.py и settings_local.py

Файлы базовых параметров. settings_local.py имеет больший приоритет.

port_name

Порт, по которому подключаться. По умолчанию 8080

database_name

Путь к базе данных.

create_database.py

Скрипт для создания БД и таблицы users. Название БД подтягивается из settings.py. Никаких дополнительных параметров вводить не надо, просто запустить.

main.py

Отвечает за, собственно, сервис. Запуск сервиса = запуск main.py. Естественно, предварительно стоит нужно установить все зависисмости из requirements.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages