Skip to content
mDev86 edited this page Jul 25, 2018 · 6 revisions

EN


RU

Соединение с сервером осуществляется по протоколу WebSocket.

Шаблон передачи данных от клиента к серверу:

{
 "executeFunction": "Название вызываемой функции",
 "actId": "Идентификатор сообщения",
 "data": {
    "Перечень параметров функции":""
    }
}

Сервер отвечает на запрос по шаблону:

{
 "callFunction": "Название исполненной функции",
 "actId": "Идентификатор сообщения",
 "success": "Успешно или нет выполнилась функция",
 "msgError": "Информация об ошибке",  
 "data": {
    "Дополнительные параметры возвращаемые функцией":""
    }
}

Регистрация

Описание: Регистрация нового пользователя на сервере.
Идентификация и обращение к польователям чата только по логину, он уникальный

Запрос к серверу:

{
 "execFun": "Registration",
 "actId": "GUID",
 "data": {
    "login": "String",
    "password": "String",
    "nickName": "String",
    "transactionId": "GUID"
    } 
}

Ответ от сервера:

"data": { }

Возможные ошибки:

  1. Пользователь с таким логином уже существует

Авторизация

Описание: Авторизация пользователя в чате.
Запрос к серверу:

{
 "execFun": "Authorization",
 "actId": "GUID",
 "data": {
    "login": "String",
    "password": "String"
    } 
}

Ответ от сервера:

"data": {
    "nickName": "String",
    "login": "String",
    "img": "String"
}

Возможные ошибки:

  1. 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" 
}

Возможные ошибки:

  1. Change the publicId - Диалог с таким ID уже существует, необходимо изменить параметр publicId
  2. This dialog exists - Такой диалог уже создан
  3. 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",
   }
}

Возможные ошибки:

  1. User is not found - Пользователь которого добавляют не зарегистрирован
  2. Group is not found - Диалог в который пытаются добавить не существует или является приватным или закрытым
  3. This user already consists in this group - Пользователь, которого пытаются добавить в диалог уже состоит в нем
  4. This group is closed - Диалог в который пытаются добавить пользователя является закрытым (описание ниже)

Закрытие(Открытие) диалога

Description: Меняет статус диалога на открытый или закрытый.
В закрытый диалог запрещается приглашать новых пользоватлей. Изменять данный статус может только владелец(создатель) диалога

Запрос к серверу:

{
 "execFun": "SetDialogPrivate",
 "actId": "GUID",
 "data": { 
    "publicId": "GUID",
    "privated": " Boolean"
    }
}

Ответ от сервера:

Для всех членов диалога:
"data": { 
  "dialogId": "GUID",
  "privated": "Boolean"
}

Возможные ошибки:

  1. 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",
    }]
}

Возможные ошибки:

  1. 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": { }

Возможные ошибки:

  1. This transaction is not found - Такой транзакции не существует
  2. You not owner for this transaction - Не вы совершали данное действие
  3. This transaction is blocked - Транзакция заблокирована (истекло время). Данное действие отменить уже невозможно

Создание организации

Описание: Создает новую организацию. !!НИКАК НЕ ИСПОЛЬЗУЕТСЯ!!\

Запрос к серверу:

{
 "execFun": "OrganizationCreate",
 "actId": "GUID",
 "data": {
    "publicId": " GUID",
    "name": "String",
    "transactionId": " GUID"
    }
}

Ответ от сервера:

"data": {
   "publicId": "GUID",
   "name": "String" 
}

Possible response errors:

  1. Change the publicId
  2. You a have already organization

Добавление пользователя к организации

Описание: Добавляет пользователя к органазации !!НИКАК НЕ ИСПОЛЬЗУЕТСЯ!!.\

Запрос к серверу:

{
 "execFun": "OrganizationAddMember",
 "data": {
    "login": " String",
    "password": "String",
    "nickName": "String",
    "transactionId": " GUID"
    }
}

Ответ от сервера:

"data": {
   "login": "String",
   "nickName": "String" 
}

Possible response errors:

  1. You a not consist in organization or a not organization owner
  2. 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":{}
}