1.0.3 • Published 4 years ago

session-connector v1.0.3

Weekly downloads
34
License
MIT
Repository
-
Last release
4 years ago

Сервис для создания сессии

Установка

Через npm

$ npm install --save session-connector

Через yarn

$ yarn add session-connector

Для начала вызова любых методов необходимо инициализировать сервис:

import { initial } from 'session-connector';

const config = {
  URI: string,
  SOCKET_URI: string,
  hasLogger: boolean,
  onSocketOpen?: () => {},
  onSocketClose?: () => {},
  onSocketError?: () => {},
  onSessionRefresh?: (sessionInfo: MainSessionInfo) => {},
}

initial(config);

Авторизация

По токену

import { authByToken } from 'session-connector';

const token = '<base64string>';
const {
  userId,
  email,
  sessionServerKey,
  sessionSalt,
  sessionId,
  ttl,
  sessionTime
} = await authByToken(token);

По логину (телефон или электронная почта)

Авторизация по логину происходит в два этапа:

import { createPreparedSession } from 'session-connector';

const login = '79999999999';
const { clientPublicKey, clientSecretKey, ttl, userId, email } = await createPreparedSession(login);

После получения открытого ключа необходимо подписаться на ON_LOGIN.

 const fetchResult = makeSubscription(ON_LOGIN, {
  [connectionTypeName]: login,
  publicKey: clientPublicKey,
  metadata, // информация о браузере и геолокации
});

После получения ответа создать ApolloClient:

import { authByLogin } from 'session-connector';

const sessionTime = +new Date();

authByLogin({
  salt,
  secretKey, // секретный ключ клиента
  publicKey, // публичный ключ сервера
  sessionId,
  ttl,
  sessionTime // время создания сессии
});

Создание сессии в meta trust

Генерируем зашифрованные userId и salt

import { createSignedInfo } from 'session-connector';

const phone = '79999999999';
await createSignedInfo(phone);

Генерируем данные для создания сессии

import { createSignedInfo } from 'session-connector';

const fcmToken = '<token>';
const smsCode = '5555'
const modelPhone = 'iPhone 12'

const {
  ttl,;
  sessionId,
  sessionServerKey,
  sessionSalt,
  sessionTime,
  clientSecretKey,
} = await generateSession(fcmToken, smsCode, modelPhone);

Выполнение запросов

function makeQuery<T>(query: DocumentNode, variables: OperationVariables): Promise<ApolloQueryResult<T>>
function makeMutation(mutation: DocumentNode, variables: OperationVariables, fetchPolicy: FetchPolicy): Promise<any>
function makeSubscription(query: DocumentNode, variables: any): Observable<any>

Передача файлов

Открытие/получение канала для передачи данных

import { getUploadsChannel } from 'session-connector';

const channel = getUploadsChannel();

Открытие канала для передачи одного файла

import { createDataChannel } from 'session-connector';

const id = 'Идентификатор сессии начала передачи файла';

const channel = createDataChannel(id);

Типы данных

/**
 * Конфигурация сервиса
 */
export type Config = {
  URI: string,
  SOCKET_URI: string,
  hasLogger: boolean,
  onSocketOpen?: VoidFunction,
  onSocketClose?: VoidFunction,
  onSocketError?: VoidFunction,
  onSessionRefresh?: (sessionInfo: ClientSessionInfo) => {},
}
1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.30

4 years ago

0.1.29

4 years ago

0.1.28

4 years ago

0.1.27

4 years ago

0.1.26

4 years ago

0.1.25

4 years ago

0.1.24

4 years ago

0.1.23

4 years ago

0.1.21

4 years ago

0.1.22

4 years ago

0.1.20

4 years ago

0.1.19

4 years ago

0.1.15

4 years ago

0.1.16

4 years ago

0.1.17

4 years ago

0.1.18

4 years ago

0.1.13

4 years ago

0.1.10

4 years ago

0.1.11

4 years ago

0.1.12

4 years ago

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago