-
Notifications
You must be signed in to change notification settings - Fork 1
API
Соединение с сервером осуществляется по протоколу WebSocket.
Шаблон передачи данных от клиента к серверу:
{ "executeFunction": "Название вызываемой функции", "actId": "Идентификатор сообщения", "data": { "Перечень параметров функции":"" } }
Сервер отвечает на запрос по шаблону:
{ "callFunction": "Название исполненной функции", "actId": "Идентификатор сообщения", "success": "Успешно или нет выполнилась функция", "msgError": "Информация об ошибке", "data": { "Дополнительные параметры возвращаемые функцией":"" } }
Описание: Регистрация нового пользователя на сервере.
Идентификация и обращение к польователям чата только по логину, он уникальный
Запрос к серверу:
{ "execFun": "Registration", "actId": "GUID", "data": { "login": "String", "password": "String", "nickName": "String", "transactionId": "GUID" } }
Ответ от сервера:
"data": { }
Возможные ошибки:
- Пользователь с таким логином уже существует
Описание: Авторизация пользователя в чате.
Запрос к серверу:
{ "execFun": "Authorization", "actId": "GUID", "data": { "login": "String", "password": "String" } }
Ответ от сервера:
"data": { "nickName": "String", "login": "String", "img": "String" }
Возможные ошибки:
- Invalid login or AN. - Неправильный логин или пароль
Описание: Создаёт новый диалог(группу).
Диалог может быть на несколько человек(групповой) или один-на один(приватный). За это отвечает флаг oneToOne: True - может состоять только 2 человека и всё. False - любое количество людей, в такой диалог есть возможность добавлять новых участников.
Если oneToOne = True, то поле name - это логин пользователя с которым создаётся диалог.
Если oneToOne = False, то поле name - название создаваемого диалога.
Запрос к серверу:
{ "execFun": "CreateDialog", "actId": "GUID", "data": { "name": "String", "publicId": " GUID", "oneToOne": " Boolean", "transactionId": " GUID" } }
Ответ от сервера:
"data": { "id": "GUID", "name": "String", "oneToOne": "Boolean" }
Возможные ошибки:
- Change the publicId - Диалог с таким ID уже существует, необходимо изменить параметр publicId
- This dialog exists - Такой диалог уже создан
- User is not found - Пользователя с которым пытаются начать диалог не существует в бд
Описание: Добавляет нового пользователя к открытому диалогу.
Запрос к серверу:
{ "execFun": "AddMemberInGroup", "actId": "GUID", "data": { "memberLogin": "String", "groupId": "GUID", "transactionId": " GUID" } }
Ответ от сервера:
Для того, кто делал запрос: "data": { "itself": "Boolean", (constant - true) "newUser": { "login": "String", "nickName": "String", "photo": "String", "online": "Boolean", }, "groupId": "GUID" } Отправляется пользователю, которого добавили: "callFunction": "AddMemberInGroup", "actId": "GUID", (constant - 0000000000000000) "data": { "id": "GUID", "name": "String", "oneToOne": "Boolean", "members": [ "login": "String" ], "newUser": { "login": "String", "nickName": "String", "photo": "String", "online": "Boolean", } }
Возможные ошибки:
- User is not found - Пользователь которого добавляют не зарегистрирован
- Group is not found - Диалог в который пытаются добавить не существует или является приватным или закрытым
- This user already consists in this group - Пользователь, которого пытаются добавить в диалог уже состоит в нем
- This group is closed - Диалог в который пытаются добавить пользователя является закрытым (описание ниже)
Description: Меняет статус диалога на открытый или закрытый.
В закрытый диалог запрещается приглашать новых пользоватлей.
Изменять данный статус может только владелец(создатель) диалога
Запрос к серверу:
{ "execFun": "SetDialogPrivate", "actId": "GUID", "data": { "publicId": "GUID", "privated": " Boolean" } }
Ответ от сервера:
Для всех членов диалога: "data": { "dialogId": "GUID", "privated": "Boolean" }
Возможные ошибки:
- This dialog not found or you not owner - Диалог не существует или вы не являетесь его владельцем(создателем)
Описание: Отправляет сообщение на сервер.
Рекомендуется использовать алгоритм разделения секрета Шамира
Запрос к серверу:
{ "execFun": "SendMsg", "actId": "GUID", "data": { "dialogId": "GUID", "textMsg": "String", "msgId": "GUID", "curFrg": "Integer", "totalFrg": "Integer", "transactionId": " GUID", "deathDate": "Long" } }
Параметры:
- dialogId - Id диалога
- textMsg - Непосредственно текст сообщения
- guidMsg - Уникальный идентификатор сообщения
- curFrg - Номер части сообщения
- totalFrg - Общее число частей на которое было разбито сообщение
- deathDate - Время по истечении которого сообщение будет не доступно
Ответ от сервера:
Ответ отправляется всем членам диалога "data": { "dialogId": "GUID", "groupName": "String", "oneToOne": "Boolean", "priavated": "Boolean", "members": [ "login": "String" ], "messages":[{ "guidMsg": "GUID", "textMsg": "String", "curFrg": "Integer", "totalFrg": "Integer", "sendTime": "Long", "senderName": "String", "senderLogin": "String", }] }
Возможные ошибки:
- Dialog is not found - Диалог не найден
Описание: Возвращает список диалогов содержащих запрошенное количество сообщений.
Запрос к серверу:
Запрашивает все диалоги в которых состоит пользователь { "execFun": "getDialogs", "actId": "GUID", "data": { "msgCount": "Integer" } }
ИЛИ
Запрашивает сообщения по конкретному диалогу { "execFun": "getMsg", "actId": "GUID", "data": { "dialogId": "GUID", "msgCount": "Integer", "offset": "Integer" } }
Параметры:
- msgCount - Количество возвращаемых сообщений для одного диалога
- dialogId - ИД диалога сообщения которого необходимо получить
- offset - Количество первых сообщений, которые будут пропущены
Ответ от сервера:
"data": [ { "dialogId": "GUID", "groupName": "String", "oneToOne": "Boolean", "priavated": "Boolean", "members": [ "login": "String" ], "messages":[{ "guidMsg": "GUID", "textMsg": "String", "curFrg": "Integer", "totalFrg": "Integer", "sendTime": "Long", "senderName": "String" "senderLogin": "String" }] }, {dialogId ...} ]
Описание: Возвращает доступную информацию о ползователе.
Запрос к серверу:
{ "execFun": "GetUserInfo", "actId": "GUID", "data": { } }
Ответ от сервера:
"data": { "login": "String", "nickName": "String", "photo": "String", "online": "Boolean" }
Описание: Изменяет информацию о пользователе.
Для смены пароля указать параметр changePass = True
Запрос к серверу:
{ "execFun": "ChangeUserInfo", "actId": "GUID", "data": { "name":"String", "photo":"String", "about":"String", "changePass":"Boolean", "oldPass":"String", "newPass":"String" } }
Ответ от сервера:
"data": { "itself": "Boolean", "user": { "login": "String", "nickName": "String", "photo": "String", "online": "Boolean" } }
Описание: Отменить изменение в базе. Данное действие возможно в течении определенного времени(Параметр конфигурации TransactionRollback) и только пользователю, который совершил данное действие. По истечению времени транзакция блокируется.
Запрос к серверу:
{ "execFun": "RollbackTransaction", "actId": "GUID", "data": { "transactionId": "GUID" } }
Ответ от сервера:
"data": { }
Возможные ошибки:
- This transaction is not found - Такой транзакции не существует
- You not owner for this transaction - Не вы совершали данное действие
- This transaction is blocked - Транзакция заблокирована (истекло время). Данное действие отменить уже невозможно
Описание: Создает новую организацию. !!НИКАК НЕ ИСПОЛЬЗУЕТСЯ!!\
Запрос к серверу:
{ "execFun": "OrganizationCreate", "actId": "GUID", "data": { "publicId": " GUID", "name": "String", "transactionId": " GUID" } }
Ответ от сервера:
"data": { "publicId": "GUID", "name": "String" }
Possible response errors:
- Change the publicId
- You a have already organization
Описание: Добавляет пользователя к органазации !!НИКАК НЕ ИСПОЛЬЗУЕТСЯ!!.\
Запрос к серверу:
{ "execFun": "OrganizationAddMember", "data": { "login": " String", "password": "String", "nickName": "String", "transactionId": " GUID" } }
Ответ от сервера:
"data": { "login": "String", "nickName": "String" }
Possible response errors:
- You a not consist in organization or a not organization owner
- This login already exists
Запрос на регистрацию пользователя
{ "execFun": "Registration", "actId": "99ab7bf3bef54f77b35ce9b5ee8f8261", "data": { "login": "myLogin", "password": "99ab7bf3bef54f77b35ce8b5ee8f8260", "nickName": "Anonymus", "transactionId": "50b411ceab24adeb0539de62100646c0" } }
Ответ от сервера:
Регистрация прошла успешно { "callFunction":"registration", "actId": "99ab7bf3bef54f77b35ce9b5ee8f8261", "success":true, "msgError":"", "data":{} } ```JSON Ошибка регистрации, если пользователь с таким логином уже существует { "callFunction":"registration", "actId": "99ab7bf3bef54f77b35ce9b5ee8f8261", "success":false, "msgError":"This login already exists", "data":{} }
Запрос на получение диалогов с сообщениями
{ "execFun": "getDialogs", "actId": "99ab7bf3bef54f77b35ce9b5ee8f8262", "data": { "msgCount": 2 } }
Ответ:
{ "callFunction": "getMsg", "actId": "99ab7bf3bef54f77b35ce9b5ee8f8262", "success": true, "msgError": "", "data":[ { "dialogId":"18a0ca06-57de-4fb0-9cdc-86008b2a8ebe", "groupName":"Group", "messages":[{ "guidMsg":"01d8133f-a55b-80af-b66c-a63e214c97c0", "textMsg":"Fragment message", "curFrg":6, "totalFrg":10, "sendTime":1517333361, "senderName":"Anon" }, { "guidMsg":"09d8133f-a55b-80af-b66c-a63e214c97c5", "textMsg":"Fragment message", "curFrg":6, "totalFrg":10, "sendTime":1517333903, "senderName":"Anonimus"}] }, { "dialogId":"64a0ca06-57de-4fb0-9cdc-86008b2a8ebe", "groupName":"Group2", "messages":[] } ] }
Если параметры в блоке data имеют неверный тип, не соответствует их количество или ошибка в названии параметра:
{ "callFunction":"registration", "success":false, "msgError":"Invalid sending data", "data":{} }
Ошибка если пользователь не авторизован. Неавторизованному пользователь доступна только регистрация
{ "callFunction":"getMsg", "success":false, "msgError":"You are not authorized. To continue working you need to login.", "data":{} }
Если допущена ошибка в названии функции, котору хотят выполнить
{ "callFunction":"getMsgError", "success":false, "msgError":"Function: 'getMsgError' not found", "data":{} }