lan/ebs-sdk

Ebs SDK

1.3.3 2023-09-20 06:08 UTC

README

Build Status Scrutinizer Code Quality Code Coverage

Latest Stable Version Total Downloads Latest Unstable Version

兰书电子图书系统公开API - RESTful API服务器,用于与客户订阅者的信息系统交互 兰书电子图书系统.

内容

  1. 安装
  2. 自动登录
  3. 访问元数据

安装

您可以通过以下三种方式之一下载和安装SDK

初始化Api客户端

为了在兰书电子图书系统服务器上授权,需要一个在连接服务时为每个组织单独颁发的令牌。为了初步了解功能,您可以使用测试令牌。

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new \Lan\Ebs\Sdk\Client($token); // инициализация клиента

按代码授权

兰书电子图书系统支持通过特殊链接自动注册和授权订阅者的读者

  • 自动注册 用户在兰书电子图书系统中未注册指定ID的用户时进行。在这种情况下,系统将为其创建新帐户并在系统中进行授权。
  • 自动授权 对已拥有指定ID帐户的用户有效,这些帐户之前已通过自动注册在系统中注册。在这种情况下,系统将自动进行授权。

注意! 请注意,通过带代码的链接进行自动授权仅适用于以相同方式(通过自动注册)注册的用户。通过API或通过网站上的注册表单自行注册的用户必须使用注册时指定的用户名和密码登录。通过自动登录尝试此类用户的授权将导致创建一个与现有帐户无关的新帐户。

步骤1. 获取SDK对象

$security = new \Lan\Ebs\Sdk\Security($client);

步骤2. 获取授权代码的URL

参数
  • $uid = '12345'; - 您系统中的用户标识符(id或登录名或任何其他唯一标识符) - 必需
  • $fio = ‘Иванов Иван Иванович’; - 用户的全名 - 非必需
  • $email = ‘ivanov@example.com’; - 用户的电子邮件 - 非必需
  • $redirect = ‘/book/27’; - 注册/授权成功后希望访问的页面 - 非必需
示例
try {
    echo '<a class="lan-ebs-autologin" href="' . $security->getAutologinUrl($uid, $fio, $email, $redirect) .  '">ЭБС Лань</a>';
} catch (\Exception $e) {
    echo '<span class="lan-ebs-autologin">Сгенерировать ссылку для автологина в ЭБС Лань не удалось (' . $e->getMessage() . ')</span>';
}

另请参阅

访问元数据

通过API访问元数据,可以获取关于订阅者可访问的书籍和期刊的信息。

获取书籍集合

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$limit = 5; // Ограничение на выборку данных (максимально 1000)
$offset = 0; // Смещение выборки данных 

$fields = [Book::FIELD_NAME, Book::FIELD_AUTHORS, Book::FIELD_ISBN, Book::FIELD_YEAR, Book::FIELD_PUBLISHER, Book::FIELD_LANG]; // поля для выборки

/**
 * Доступные поля:
 *      Book::FIELD_NAME = 'name' - Наименование книги
 *      Book::FIELD_DESCRIPTION = 'description' - Описание книги
 *      Book::FIELD_ISBN = 'isbn' - ISBN книги
 *      Book::FIELD_YEAR = 'year' - Год издания книги
 *      Book::FIELD_EDITION = 'edition' - Издание
 *      Book::FIELD_PAGES = 'pages' - Объем книги
 *      Book::FIELD_SPECIAL_MARKS = 'specialMarks' - Специальные отметки
 *      Book::FIELD_CLASSIFICATION = 'classification' - Гриф
 *      Book::FIELD_AUTHORS = 'authors' - Авторы
 *      Book::FIELD_AUTHOR_ADDITIONS = 'authorAdditions' - Дополнительные авторы
 *      Book::FIELD_BIBLIOGRAPHIC_RECORD = 'bibliographicRecord' - Библиографическая запись
 *      Book::FIELD_PUBLISHER = 'publisher' - Издательство
 *      Book::FIELD_LANG = 'lang' - Язык
 *      Book::FIELD_URL = 'url' - Ссылка на карточку книги
 *      Book::FIELD_THUMB = 'thumb' - Ссылка на обложку книги
 */

$bookCollection = new BookCollection($client, $fields, $limit, $offset); // коллекция моделей книг

/** @var Book $book */
foreach ($bookCollection as $book) {
      echo $book->name;
}

另请参阅

获取书籍元数据

示例
$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$fields = [Book::FIELD_NAME, Book::FIELD_AUTHORS, Book::FIELD_ISBN, Book::FIELD_YEAR, Book::FIELD_PUBLISHER, Book::FIELD_LANG]; // поля для выборки

/**
 * Доступные поля:
 *      Book::FIELD_NAME = 'name' - Наименование книги
 *      Book::FIELD_DESCRIPTION = 'description' - Описание книги
 *      Book::FIELD_ISBN = 'isbn' - ISBN книги
 *      Book::FIELD_YEAR = 'year' - Год издания книги
 *      Book::FIELD_EDITION = 'edition' - Издание
 *      Book::FIELD_PAGES = 'pages' - Объем книги
 *      Book::FIELD_SPECIAL_MARKS = 'specialMarks' - Специальные отметки
 *      Book::FIELD_CLASSIFICATION = 'classification' - Гриф
 *      Book::FIELD_AUTHORS = 'authors' - Авторы
 *      Book::FIELD_AUTHOR_ADDITIONS = 'authorAdditions' - Дополнительные авторы
 *      Book::FIELD_BIBLIOGRAPHIC_RECORD = 'bibliographicRecord' - Библиографическая запись
 *      Book::FIELD_PUBLISHER = 'publisher' - Издательство
 *      Book::FIELD_LANG = 'lang' - Язык
 *      Book::FIELD_URL = 'url' - Ссылка на карточку книги
 *      Book::FIELD_THUMB = 'thumb' - Ссылка на обложку книги
 */

$book = new Book($client, $fields);
$metaDataBook = $book->get($bookId);

另请参阅

获取期刊集合

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$limit = 5; // Ограничение на выборку данных (максимально 1000)
$offset = 0; // Смещение выборки данных 

$fields = [Journal::FIELD_NAME, Journal::FIELD_ISSN, Journal::FIELD_PUBLISHER]; // поля для выборки

/**
 * Доступные поля:
 *      Journal::FIELD_NAME = 'name' - Наименование журнала
 *      Journal::FIELD_DESCRIPTION = 'description' - Описание журнала
 *      Journal::FIELD_ISSN = 'issn' - ISSN журнала
 *      Journal::FIELD_EISSN = 'eissn' - EISSN журнала
 *      Journal::FIELD_VAC = 'vac' - Входит в перечень ВАК
 *      Journal::FIELD_YEAR = 'year' - Год основания
 *      Journal::FIELD_ISSUES_PER_YEAR = 'issuesPerYear' - Выпусков в год
 *      Journal::FIELD_EDITORS = 'editors' - Редакторы
 *      Journal::FIELD_PUBLISHER = 'publisher' -  Издательство
 *      Journal::FIELD_URL = 'url' - Ссылка на карточку журнала
 */

$journalCollection = new JournalCollection($client, $fields, $limit, $offset); // коллекция моделей журналов

/** @var Journal $journal */
foreach ($journalCollection as $journal) {
      echo $journal->name;
}

另请参阅

获取期刊元数据

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$fields = [Journal::FIELD_NAME, Journal::FIELD_ISSN, Journal::FIELD_PUBLISHER]; // поля для выборки

/**
 * Доступные поля:
 *      Journal::FIELD_NAME = 'name' - Наименование журнала
 *      Journal::FIELD_DESCRIPTION = 'description' - Описание журнала
 *      Journal::FIELD_ISSN = 'issn' - ISSN журнала
 *      Journal::FIELD_EISSN = 'eissn' - EISSN журнала
 *      Journal::FIELD_VAC = 'vac' - Входит в перечень ВАК
 *      Journal::FIELD_YEAR = 'year' - Год основания
 *      Journal::FIELD_ISSUES_PER_YEAR = 'issuesPerYear' - Выпусков в год
 *      Journal::FIELD_EDITORS = 'editors' - Редакторы
 *      Journal::FIELD_PUBLISHER = 'publisher' -  Издательство
 *      Journal::FIELD_URL = 'url' - Ссылка на карточку журнала
 */

$journal = new Journal($client, $fields);
$metaDataJournal = $journal->get($journalId);

另请参阅

获取期刊发行集合

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$limit = 5; // Ограничение на выборку данных (максимально 1000)
$offset = 0; // Смещение выборки данных 

$fields = [Issue::FIELD_NAME, Issue::FIELD_YEAR]; // поля для выборки

/**
 * Доступные поля:
 *      Issue::FIELD_NAME = 'name' - Номер выпуска
 *      Issue::FIELD_YEAR = 'year' - Год выпуска
 *      Issue::FIELD_URL = 'url' - Ссылка на карточку выпуска
 *      Issue::FIELD_THUMB = 'thumb' - Ссылка на обложку выпуска
 */

$issueCollection = new IssueCollection($client, $fields, $limit, $offset); // коллекция моделей выпусков

/** @var Issue $issue */
foreach ($issueCollection as $issue) {
      echo $issue->name;
}

另请参阅

获取期刊发行元数据

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$fields = [Issue::FIELD_NAME, Issue::FIELD_YEAR]; // поля для выборки

/**
 * Доступные поля:
 *      Issue::FIELD_NAME = 'name' - Номер выпуска
 *      Issue::FIELD_YEAR = 'year' - Год выпуска
 *      Issue::FIELD_URL = 'url' - Ссылка на карточку выпуска
 *      Issue::FIELD_THUMB = 'thumb' - Ссылка на обложку выпуска
 */

$issue = new Issue($client, $fields);
$metaDataIssue = $issue->get($issueId);

另请参阅

获取期刊发行文章集合

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$limit = 5; // Ограничение на выборку данных (максимально 1000)
$offset = 0; // Смещение выборки данных 

$fields = [Article::FIELD_NAME, Article::FIELD_AUTHORS]; // поля для выборки

/**
 * Доступные поля:
 *      Article::FIELD_NAME = 'name' - Наименование статьи
 *      Article::FIELD_AUTHORS = 'authors' - Авторы статьи
 *      Article::FIELD_DESCRIPTION = 'description' - Аннотация статьи
 *      Article::FIELD_KEYWORDS = 'keywords' - Ключевые слова статьи
 *      Article::START_PAGE = 'startPage' - Страница начала статьи
 *      Article::FINISH_PAGE = 'finishPage' - Страница окончания статьи
 *      Article::FFIELD_BIBLIOGRAPHIC_RECORD = 'bibliographicRecord' - Библиографическая запись
 */

$articleCollection = new ArticleCollection($client, $fields, $limit, $offset); // коллекция моделей статей

/** @var Article $article */
foreach ($articleCollection as $article) {
      $article->name;
}

另请参阅

获取文章元数据

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$fields = [Article::FIELD_NAME, Article::FIELD_AUTHORS]; // поля для выборки

/**
 * Доступные поля:
 *      Article::FIELD_NAME = 'name' - Наименование статьи
 *      Article::FIELD_AUTHORS = 'authors' - Авторы статьи
 *      Article::FIELD_DESCRIPTION = 'description' - Аннотация статьи
 *      Article::FIELD_KEYWORDS = 'keywords' - Ключевые слова статьи
 *      Article::START_PAGE = 'startPage' - Страница начала статьи
 *      Article::FINISH_PAGE = 'finishPage' - Страница окончания статьи
 *      Article::FFIELD_BIBLIOGRAPHIC_RECORD = 'bibliographicRecord' - Библиографическая запись
 */

$article = new Article($client, $fields);
$metaDataArticle = $article->get($articleId);

另请参阅

用户管理

获取用户列表

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$limit = 5; // Ограничение на выборку данных (максимально 1000)
$offset = 0; // Смещение выборки данных 

$fields = [User::FIELD_LOGIN, User::FIELD_EMAIL, User::FIELD_FIO];

/**
 * Доступные поля:
 *      User::FIELD_LOGIN = 'login' - Логин пользователя
 *      User::FIELD_FIO = 'fio' - ФИО пользователя
 *      User::FIELD_EMAIL = 'email' - Email пользователя
 *      User::FIELD_REGISTERED = 'registeredAt' - Дата и время регистрации
 */

$userCollection = new UserCollection($client, $fields, $limit, $offset); // коллекция моделей пользователей

/** @var User $user Модель пользователя */
foreach ($userCollection as $user) {
   echo $user->fio; // вывод ФИО пользователя 
}

另请参阅

获取用户及其元数据

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$fields = [User::FIELD_LOGIN, User::FIELD_EMAIL, User::FIELD_FIO];

/**
* Доступные поля:
*      User::FIELD_LOGIN = 'login' - Логин пользователя
*      User::FIELD_FIO = 'fio' - ФИО пользователя
*      User::FIELD_EMAIL = 'email' - Email пользователя
*      User::FIELD_REGISTERED = 'registeredAt' - Дата и время регистрации
*/

$user = new User($client, $fields); // Модель пользователя
$user = $user->get($testUserPk); // Метаданные пользователя

另请参阅

创建用户

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$user = new User($client);
$user->post([
 'login' => 'new_user_login',
 'password' => 'new_user_password',
 'fio' => 'new_user_fio'
]);

另请参阅

更改全名和/或密码

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$user = new User($client);
$user->setId($testUserPk);
$user->put([
 'fio' => 'user_new_fio',
 'password' => 'user_new_password',
]);

另请参阅

解除用户关联

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$user = new User($client);
$user->setId($testUserPk);
$user->delete();

另请参阅

报告

访问统计

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$groupBy = Report::GROUP_BY_MONTH; // Группировка

/**
 * Доступные поля:
 *      Report::GROUP_BY_DAY = 'day' - По дням
 *      Report::GROUP_BY_MONTH = 'month' - По месяцам
 *      Report::GROUP_BY_YEAR = 'year' - По годам
 */

$report = new Report($client);
$userVisitStatistics = $report->getUsersVisitsStatistics($groupBy, '2017-10-01', '2017-11-01');

另请参阅

书籍阅读统计

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$groupBy = Report::GROUP_BY_MONTH; // Группировка

/**
 * Доступные поля:
 *      Report::GROUP_BY_DAY = 'day' - По дням
 *      Report::GROUP_BY_MONTH = 'month' - По месяцам
 *      Report::GROUP_BY_YEAR = 'year' - По годам
 */

$report = new Report($client);
$bookViewsStatistics = $report->getBooksViewsStatistics($groupBy, '2017-10-01', '2017-11-01');

另请参阅

期刊阅读统计

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$groupBy = Report::GROUP_BY_MONTH; // Группировка

/**
 * Доступные поля:
 *      Report::GROUP_BY_DAY = 'day' - По дням
 *      Report::GROUP_BY_MONTH = 'month' - По месяцам
 *      Report::GROUP_BY_YEAR = 'year' - По годам
 */

$report = new Report($client);
$journalViewsStatistics = $report->getJournalsViewsStatistics($groupBy, '2017-10-01', '2017-11-01');

另请参阅

可用书籍报告(按集合)

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$report = new Report($client);
$availablePacketsStatistics = $report->getAvailablePackets();

另请参阅

可用图书报告 - 集合中的可用图书

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$packetId = 720773; // Идентификатор пакета

$report = new Report($client);
$availableBooksStatistics = $report->getAvailableBooks($packetId);

另请参阅

可用期刊报告

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$report = new Report($client);
$availableJournalsStatistics = $report->getAvailableJournals();

另请参阅

规范报告

图书馆藏书

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$report = new ReportForm($client);
$bibFond = $report->getBibFond();

另请参阅

培养方向电子图书

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$report = new ReportForm($client);
$ebooks = $report->getEBooks();

另请参阅

专用软件

示例

$token = '7c0c2193d27108a509abd8ea84a8750c82b3a520'; // токен для тестового подписчика
$client = new Client($token); // инициализация клиента

$report = new ReportForm($client);
$specPo = $report->getSpecPo();

另请参阅