iprbooks/iprbooks-ebs-sdk

1.0.1 2019-09-18 07:39 UTC

This package is not auto-updated.

Last update: 2024-05-10 15:31:20 UTC


README

API ЭБС IPR BOOKS - RESTful API сервер, предназначенный для взаимодействия с информационными системами клиентов - подписчиков ЭБС IPR BOOKS. Документация по API находится здесь.

Содержание:

  1. Установка
  2. Инициализация клиента API
  3. Доступ к метаданным
  4. Управление пользователями
  5. Бесшовная интеграция

Установка

Простой и наиболее предпочтительный способ установки SDK - composer.

 "iprbooks/iprbooks-ebs-sdk" : "dev-master"

Другой способ - скачать архив с исходным кодм master.zip или воспользоваться git clone и вручную добавить в проект.

git clone git@github.com:iprbooks/iprbooks-ebs-sdk.git

Инициализация клиента Api

Для инициализации клиента необходимы следующие параметры

Параметр Описание
$clientId Идентификатор организации-клиента ЭБС IPR BOOKS (получается вместе с ключевой фразой для получения JWT-токена).
$token В личном кабинете ЭБС авторизоваться под главным пользователем организации, сгенерировать ключ защиты данных для JWT-авторизации запросов.

Пример

$clientId = 187;
$token = 'qdEEZBzAr!KV%Dq(WfNm]mNdLzn(m8{8';

$client = new Client($clientId, $token);

Доступ к метаданным

Доступ к метаданным позволяет посредством API получать информацию о книгах и периодических изданиях, доступных подписчику ЭБС IPR BOOKS в рамках приобретенной подписки.

Получение коллекции книг

Список полей для фильтрации с описанием доступен в BooksCollection.php, атрибуты элемента коллекции (книги) доступны с помощью публичных методов определенных и описанных в Book.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание и конфигурация объекта коллекции
$booksCollection = new BooksCollection($client);
$booksCollection->setFilter(BooksCollection::YEAR_LEFT, '2010')
    ->setFilter(BooksCollection::YEAR_RIGHT, '2010')
    ->setLimit(25)
    ->setOffset(0);

// выполнение запроса
$booksCollection->get();

// обращение к элементу коллекции по индексу
$title = $booksCollection->getItem(0)->getTitle();

// перебор элементов коллекции с помощью foreach
foreach ($booksCollection as $book) {
    $title = $book->getTitle();
}

Получение метаданных книги

Атрибуты книги доступны с помощью публичных методов определенных и описанных в Book.php

Пример:
// инициализация клиента
$client = new Client($clientId, $token);

// создание объекта книги
$book = new Book($client);

// получение книги по $id
$book->get(7039);

// обращение к одному из атрибутов книги
$title = $book->getTitle();

// получение содержания
$content = $book->getContent();
$content->get(0)->getPage();

Получение коллекции периодических изданий

Список полей для фильтрации с описанием доступен в JournalCollection.php, атрибуты элемента коллекции (периодического издания) доступны с помощью публичных методов определенных и описанных в Journal.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание и конфигурация объекта коллекции
$journalCollection = new JournalsCollection($client);
$journalCollection->setLimit(25)->setOffset(0);

// выполнение запроса
$journalCollection->get();

// обращение к элементу коллекции по индексу
$title = $journalCollection->getItem(0)->getTitle();

// перебор элементов коллекции с помощью foreach
foreach ($journalCollection as $journal) {
    $title = $journal->getTitle();
}

Получение метаданных периодического издания

Атрибуты книги доступны с помощью публичных методов определенных и описанных в Journal.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание объекта периодического издания
$journal = new Journal($client);

// получение периодического издания по $id
$journal->get(3181);

// обращение к одному из атрибутов
$title = $journal->getTitle();

Получение коллекции выпусков периодического издания

Список полей для фильтрации с описанием доступен в IssuesCollection.php, атрибуты элемента коллекции (выпуска) доступны с помощью публичных методов определенных и описанных в Issue.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание и конфигурация объекта коллекции
$issuesCollection = new IssuesCollection($client);
$issuesCollection->setLimit(25)->setOffset(0);

// выполнение запроса, $id - id периодического издания
$issuesCollection->get(3181);

// обращение к элементу коллекции по индексу
$title = $issuesCollection->getItem(0)->getTitle();

// перебор элементов коллекции с помощью foreach
foreach ($issuesCollection as $issue) {
    $title = $issue->getTitle();
}

Получение метаданных выпуска периодического издания

Атрибуты книги доступны с помощью публичных методов определенных и описанных в Issue.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание объекта выпуска
$issue = new Issue($client);

// получение выпуска по $id
$issue->get(3339);

// обращение к одному из атрибутов
$title = $issue->getTitle();

Управление пользователями

Получение текущего списка пользователей

Список полей для фильтрации с описанием доступен в UsersCollection.php, атрибуты элемента коллекции (пользователя) доступны с помощью публичных методов определенных и описанных в User.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание и конфигурация объекта коллекции
$usersCollection = new UsersCollection($client);
$usersCollection->setLimit(25)->setOffset(0);

// выполнение запроса, $id - id периодического издания
$usersCollection->get();

// обращение к элементу коллекции по индексу
$email = $usersCollection->getItem(0)->getEmail();

// перебор элементов коллекции с помощью foreach
foreach ($usersCollection as $user) {
    $email = $user->getEmail();
}

Получение пользователя и его метаданных

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// создание объекта книги
$user = new User($client);

// получение пользователя по $id
$user->get(187);

// обращение к одному из атрибутов
$email = $user->getEmail();

Добавление пользователя

Обязательно должны быть переданы следующие параметры:

  • $email — email-адрес пользователя, длина не более 255 символов
  • $fullname — полное имя пользователя
  • $password — пароль пользователя

Необязательные параметры:

  • $userType — тип пользователя. Список возможных значений доступен в User.php

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

$email = 'newuser@mail.ru';
$fullname = 'newuser@mail.ru';
$password = '********';
$userType = User::STUDENT;

$manager = new UserManager($client);
$user = $manager->registerNewUser($email, $fullname, $password, $userType);
$userId = $user->getId();

Блокировка пользователя

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

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

$manager = new UserManager($client);
$manager->deleteUser(187);

Восстановление пользователя

Восстановление пользователя организации по id

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

$manager = new UserManager($client);
$manager->restoreUser(187);

Бесшовная интеграция

Генерация ссылки на активацию ключа и авторизацию пользователя

Обязательные параметры:

  • $userId - id пользователя организации

Необязательные параметры:

  • $publicationId — проверяется существует ли данная публикация, если да, произойдет автопереход на страницу публикации

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

// получение id пользователя организации
$usersCollection = new UsersCollection($client);
$usersCollection->get();
$userId = $usersCollection->getItem(0)->getId();

// получение ссылки
$integrationManager = new IntegrationManager($client);
$url = $integrationManager->generateToken($userId);

Создание ссылки для прохождения автоматической регистрации/аутентификации пользователя

Обязательные параметры:

  • $email — email пользователя, если он уже зарегистрирован, произойдет автоматическая авторизация данного пользователя
  • $fullname - полное имя пользователя
  • $userType - тип пользователя:
    • 1 - студенты
    • 2 - аспиранты
    • 3 - преподаватели
    • 4 - нетипизированный(по умолчанию)
  • $publicationId - если передано, проверяется существует ли данная публикация, если да, произойдет автопереход на страницу публикации
  • $openMethod - работает, если передан publication_id, значения true/false. Если параметр передан, проверит доступность издания, проверит возможность загрузки в iframe, если все проверки успешно пройдены, откроет ридер с загруженной публикацией.

Пример:

// инициализация клиента
$client = new Client($clientId, $token);

$integrationManager = new IntegrationManager($client);

// данные пользователя
$email = 'test@test.com';
$fullname = 'testname';
$userType = USER::STUDENT;
$publicationId = 123;
$isFrameOpen = true;

//получение ссылки
$url = $integrationManager->generateAutoAuthUrl($email, $fullname, $userType, $publicationId, $isFrameOpen);