Медиа библиотека сервера

Плагин Медиа библиотека сервера позволяет сохранять, организовывать и использовать элементы контента (в основном, любые файлы, включая медиафайлы, такие как изображения и видео) в SberMobile. Элементы организованы в иерархии папок, и к каждой из них можно получить доступ с помощью URI, определяемого структурой папок и именем хоста сервера SberMobile. Помимо использования в качестве типичных переменных единой модели данных, доступ к ресурсам Медиа библиотеки сервера может осуществляться через HTTP API, например, из компонентов Инструментальной панели SberMobile.

API медиа библиотеки сервера и REST API - это отдельные плагины, для которых требуются разные токены аутентификации. Хотя в каждом плагине есть метод /auth для генерации токенов аутентификации, эти токены не являются взаимозаменяемыми.

Кроме того, команды REST имеют формат пути <host>/rest/v1/<команда>, а команды Медиа библиотеки сервера используют <host>/content/<команда>/<путь к цели>.

Конфигурация

Свойства конфигурации библиотеки.

Описание поля

Тип

Подробности

Разрешить анонимный доступ

Boolean

Когда этот параметр включен, содержимое будет обрабатываться независимо от того, прошел ли запрашивающий аутентификацию. Когда этот параметр отключен, содержимое будет обрабатываться только для тех, кто прошел аутентификацию. Особенно применимо в случае, когда Права доступа для анонимного пользователя включены.

Список файлов

Папки и ресурсы в Медиа библиотеке сервера определяются как записи в таблице со следующими полями:

Описание поля

Тип

Подробности

Тип

String

Указывает, является ли данная сущность папкой или файлом.

  • Директория - содержит другие ресурсы или папки. Имена папок используются для определения URI вызова API для получения ресурса.

  • Файл - ресурс, к которому необходимо получить доступ. Имена файлов используются для определения URI вызова API для получения ресурса.

Имя

String

Имя файла или папки. URI вызова API для извлечения ресурса будет основан на этом поле и полях имени родительской папки или папок.

Содержимое директории

Data Table

Вложенная таблица данных, доступная для строк типа Директория. Идентична по формату данной таблице данных. Указывает файлы и папки, которые содержатся в папке.

Файл

Data Block

Блок данных, доступный для строк типа Файл. Загрузите ресурс, который будет возвращен. Обратите внимание, что имя файла в этом поле не влияет на URI, генерируемый для вызова API.

Тип содержимого

String

Доступно для строк типа Файл. Настраивает значение HTTP-заголовка content-type, указывающего на исходный тип файла ресурса. Например, изображение png будет иметь значение image/png, а текстовый файл - text/plain в соответствии с RFC 7231 Media Types.

Режим кэширования

String

Заголовок HTTP, определяющий инструкции для кэширования клиентов в соответствии с RFC 7234 Режим кэширования.

  • Public указывает, что ответы могут быть получены из общего кэша.

  • Private указывает, что ответы генерируются для конкретного пользователя и не должны сохраняться в общем кэше.

  • No-cache указывает, что ответ не должен использоваться для удовлетворения последующих запросов без успешного подтверждения со стороны сервера.

  • No-store указывает на то, что в кэше не должна храниться никакая часть ни запроса, ни ответа.

Использование REST API медиа библиотеки сервера

Запрос файла

Получает ресурс из библиотеки.

Запрос

GET /content/file/<Путь к файлу>/<Имя файла>
  • Путь к файлу - имена каталогов в порядке возрастания глубины, разделенные символом /.

  • Имя файла - имя файла, указанное в поле Имя таблицы конфигурации.

Поля заголовка запроса

  • Авторизация - текущий токен аутентификации. Дополнительные сведения об аутентификации см. в разделе Аутентификация.

Тело ответа

Зависит от типа содержимого запрашиваемого ресурса.

Пример запроса

Запрос:

GET https://localhost:8080/content/file/text_directory/text_file.txt

Пример ответа

Текст содержимого файла

Пример использования медиа библиотеки сервера

Добавление содержимого

Пример ниже включает две строки, одна из которых настроена как текстовый файл, а другая - как папка. Файл example_text.txt содержит текстовые данные, а папка plants содержит подтаблицу с изображением flower_picture.png.

Тип

Имя

Содержимое директории

Файл

Тип содержимого

Режим кэширования

Файл

text.txt

Null

example_text.txt

text/plain

Public

Директория

plants

Подтаблица

<Нет данных>

Н/Д

Public

Подтаблица

Тип

Название

Содержимое директории

Файл

Тип содержимого

Режим кэширования

Файл

flower.png

Null

flower_picture.png

image/png

Public

Аутентификация

Все запросы к библиотеке должны быть полностью аутентифицированы, то есть содержать токен, сгенерированный из запроса на авторизацию.

Пример использования cURL в командной строке Linux выглядит следующим образом:

curl --request POST 'http://localhost:8080/web/v1/public/auth' \ 
--header 'Content-Type: application/json' \
--data-raw '{"username":"admin","password":"admin"}'

Ответ

{
"token": "eyJhbGciOiJIUzI1NiJ9.dCI6MTY3NDIxMDg1NywiaXNzIjoiY29tLnRpYmJvLmxpbmtzZXJ2ZXIuc...",
"simpleMode": false,
"existsAdministrationDashboard": false,
"accessedAdministrationDashboard": true,
"administrationDashboardPath": "users.admin.dashboards.administration"
}

Параметр token содержит токен аутентификации.

Команды API

Запрос файла

Для получения текстовых данных из командной строки можно использовать следующий запрос:

curl --request GET 'http://localhost:8080/content/file/text.txt' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.dCI6MTY3NDIxMDg1NywiaXNzIjoiY29tLnRpYmJvLmxpbmtzZXJ2ZXIuc...'

Ответ

Приведенная выше команда вернет значение файла text.txt:

Текущий пример текста.

Инструментальные панели

Чтобы использовать ресурс в компоненте приборной панели, например в компоненте Image, выберите опцию URL и используйте URI нужного ресурса. В приведенном выше примере, если нужное изображение flowers.png находится в папке plants/, то используемый URL будет http://localhost:8080/content/file/plants/flowers.png.

Заменить Активы по умолчанию

Медиа библиотека сервера также может быть использована для замены любого актива, видимого в веб-интерфейсе. В качестве примера можно привести замену стандартных иконок меню SberMobile на соответствующие заданной палитре или изменение шрифта по умолчанию.

Изменение пиктограмм

Предположим, что необходимо заменить стандартную иконку сервера на пользовательскую иконку custom-icon.png. Ниже показана иконка по умолчанию:

Используйте инструменты разработчика браузера, чтобы определить HTML, который отображает значок:

<img src="/web/static/images/st_server.png" alt="" loading="lazy" draggable="false">

Из этого HTML определите местоположение ресурса, в данном случае web/static/images/st_server.png.

Добавьте custom-icon.png в медиа библиотеку сервера, чтобы он отображался для /web/static/images/st_server.png и заменял иконку по умолчанию. Для этого в Медиа библиотеке сервера должны быть созданы следующие таблицы:

Корневая папка, 'web'

Тип

Имя

Содержимое папки

Файл

Тип содержимого

Режим кэширования

Директория

web

Подтаблица-1

Н/Д

Н/Д

Public

Подтаблица 1 (папкаstatic’)

Директория

static

Подтаблица-2

Н/Д

Н/Д

Public

Подтаблица 2 (папка ‘images’)

Директория

images

Подтаблица-3

Н/Д

Н/Д

Public

Подтаблица-3 (Файл)

Файл

st_server.png

Н/Д

custom_image.png

image/png

Public

В результате все ссылки на web/static/images/st_server.png будут заменены пользовательской иконкой custom-icon.png.

Настройки шрифтов

Шрифты по умолчанию можно отменить с помощью того же процесса, который описан выше. Используя инструменты разработчика, определите местоположение шрифта по умолчанию. Например, следующая часть файла fonts.css указывает место хранения шрифтов Roboto-Light:

@font-face {
font-family: 'Roboto';
src: url(/web/static/fonts/Roboto-Light.woff2) format('woff2'),
url(/web/static/fonts/Roboto-Light.woff) format('woff'),
url(/web/static/fonts/Roboto-Light.ttf) format('truetype');
font-weight: 300;
font-style: normal;
font-display: swap;
}

Из вышеуказанного следует, что по умолчанию расположение шрифтов - /web/static/fonts/Roboto-Light.woff2, с форматом woff2 и так далее. Создайте аналогичную структуру папок и файлов в Медиа библиотеке сервера, ведущую к /web/static/fonts/Roboto-Light.woff2, подобно тому, как это было описано в разделе " Изменение пиктограмм ".

Корневая папка, 'web'

Тип

Имя

Содержимое директории

Файл

Тип содержимого

Режим кэширования

Директория

веб-сайт

Подтаблица-1

Н/Д

Н/Д

Public

Подтаблица 1 ('static' папка)

Директория

статический

Подтаблица-2

Н/Д

Н/Д

Public

Подтаблица 2 (папка ‘fonts’)

Директория

шрифты

Подтаблица-3

Н/Д

Н/Д

Public

Подтаблица-3 (Файл)

Файл

Roboto-Light.woff2

Н/Д

custom-font.woff2

шрифт/вофф2

Public

Файл

Roboto-Light.woff

Н/Д

custom-font.woff

шрифт/вофф

Public

Файл

Roboto-Light.ttf

Н/Д

custom-font.ttf

font/ttf или font/compressed-ttf или application/x-font-ttf-compressed в зависимости от ситуации.

Public

Вместо шрифтов по умолчанию будут загружены пользовательские шрифты.