datalib/datalib-php-sdk

dev-master 2022-07-27 11:53 UTC

This package is not auto-updated.

Last update: 2025-04-03 01:02:07 UTC


README

API DATALIB - RESTful API сервер, предназначенный для взаимодействия с информационными системами клиентов - подписчиков DataLIB. Документация по API находится будет здесь.

Содержание:

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

Установка

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

 "datalib/datalib-php-sdk" : "dev-master"

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

git clone git@github.com:iprbooks/datalib-php-sdk.git

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

Для инициализации клиента необходим jwt-token. Получить его можно связавшись с техподдержкой support@iprmedia.ru

Пример

$token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9kZXYuYXBpLmRhdGFsaWIucnVcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE2NTcxNzc5MDMsIm5iZiI6MTY1NzE3NzkwMywianRpIjoidHd5RFF4OGFFN0RpSjJTaCIsInN1YiI6OSwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.4zjEXK6FBPeKr-N5PmdGucVV_Ekt9RhtRiJ7iuAtbD0';

$client = new Client($token);

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

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

Получение списка авторов с фильтрацией

$authors = new AuthorsCollection($client);
$authors->setFilter(AuthorsCollection::TEXT, 'Ивано');
$authors->get();
$author = $authors->getItem(0);

Получение списка издательств с фильтрацией

$publishers = new PublishersCollection($client);
$publishers->setFilter(PublishersCollection::TEXT, 'ай пи ар');
$publishers->get();
$publisher = $publishers->getItem(0);

Получение списка дисциплин с фильтрацией

$disciplines = new DisciplinesCollection($client);
$disciplines->setFilter(DisciplinesCollection::TEXT, '')
    ->setFilter(DisciplinesCollection::CATEGORY_ID, 1)
    ->get();
$discipline = $disciplines->getItem(0);

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

$titles = new TitleCollection($client);
$titles->setFilter(TitleCollection::TEXT, 'алгебра');
$titles->get();
$title = $titles->getItem(0);

Получение списка типов публикаций

$pubTypes = new PubTypeCollection($client);
$pubTypes->get();
$pubType = $pubTypes->getItem(0);

Получение списка категорий

// TODO

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

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

Пример:

// создание и конфигурация объекта коллекции
$bookCollection = new BooksCollection($client);
$bookCollection->setFilter(BooksCollection::CATEGORY, 1)
    ->setFilter(BooksCollection::RELATED_CATEGORIES, array(2, 3))
    ->setPage(3)
    ->get();


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

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

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

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

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

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

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

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

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

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

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

  • $email — email пользователя, если он уже зарегистрирован, произойдет автоматическая авторизация данного пользователя
  • $fullname - полное имя пользователя

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

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

Внимание! Для каждого пользователя DataLib ссылка бесшовного перехода одноразовая и может быть только одна. Рекомендуется генерировать ее непосредственно перед использованием.

Пример:

// инициализация
$userManager = new UserManager($client);

// параметры
$email = 'test@test.com';
$fullname = 'testname';
$publicationId = 123;

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