Формулировка проблемы: для реализации задач мобильного клиента необходимо реализовать новый метод API для получения описания ноды хранилища, а также доработать существующий метод API поиска в хранилище.
Решение:
Необходимо доработать метод
rest/api/storage/search
, добавив в каждый
выходной параметр результата поиска (json list
)
новые данные:
right
- сумма чисел, определяющая набор
прав на папку или файл:
READ = 1 (право на просмотр элемента);
ADD = 2 (право на добавление нового элемента);
DELETE = 4 (право на удаление элемента);
EDIT_FOLDER_VIEW = 8 (право на редактирование index страницы папки);
EDIT_DOCUMENT = 16 (право на редактирование документа);
ADD_COMMENT = 32 (право на добавление комментариев);
EDIT_COMMENT = 64 (право на редактирование комментариев);
DELETE_COMMENT = 128 (право на удаление комментариев);
READ_COMMENT = 256 (право на просмотр комментариев);
READ_VERSIONS = 512 (право на просмотр версий документа);
EDIT_VERSIONS = 1024 (право на восстановление версий документа);
EDIT_METADATA = 2048 (право на редактирование свойств документа);
READ_METADATA = 4096 (право на просмотр свойств документа);
EDIT_CATEGORIES = 8192 (право на редактирование классификатора документа);
READ_CATEGORIES = 16384 (право на просмотр классификатора документа);
ADD_DOCUMENT_REFERENCES = 32768 (право на добавление документа в список ссылок документа);
EDIT_DOCUMENT_REFERENCES = 65536 (право на редактирование списка ссылок документа);
DELETE_DOCUMENT_REFERENCES = 131072 (право на удаление ссылок документа);
READ_DOCUMENT_REFERENCES = 262144 (право на просмотр списка ссылок документа);
LOAD_DOCUMENT = 524288 (право на загрузку файла документа);
MOVE = 2097152 (право на перемещение / переименовывание элемента);
CHANGE_PERMISSION = 4194304 (право на назначение прав);
Примечание. Наличие всех прав должно
соответствовать максимальному значению переменной
int
в java
, т.е.
значению 2147483647. Отсутствие прав - значению 0.
icon_url
- ссылка до иконки файла.
Пример возвращаемого массива
[ { ... "right": 7, "icon_url": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл1.odt" }, { ... "right": 2147483647, "icon_url": "rest/api/storage/icons/get?aiType=ai_htd&fileName=Файл2.htd" } ]
Необходимо реализовать следующий метод:
URL: rest/api/storage/description
.
Тип: GET
.
Метод принимает следующие строковые параметры:
elementID
- идентификатор папки или файла
(обяз.);
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
В случае успешного выполнения возвращаемый json
содержит следующие поля:
identifier
- идентификатор папки или файла;
is_folder
(true/false) - папка («true») или
файл («false»);
size
- размер файла в байтах (для папки
значение = 0);
path
- полный путь до папки или файла;
name
- название папки или файла;
modified
- дата и время последнего
изменения папки или файла (в формате
yyyy-mm-dd hh:mm:ss
);
userName
- ФИО пользователя, выполнившего
последнее изменение папки или файла (в формате
Фамилия Имя О.
);
userID
- идентификатор пользователя,
выполнившего последнее изменение папки или файла;
right
- сумма чисел, определяющая набор
прав на папку или файл:
READ = 1 (право на просмотр элемента);
ADD = 2 (право на добавление нового элемента);
DELETE = 4 (право на удаление элемента);
EDIT_FOLDER_VIEW = 8 (право на редактирование index страницы папки);
EDIT_DOCUMENT = 16 (право на редактирование документа);
ADD_COMMENT = 32 (право на добавление комментариев);
EDIT_COMMENT = 64 (право на редактирование комментариев);
DELETE_COMMENT = 128 (право на удаление комментариев);
READ_COMMENT = 256 (право на просмотр комментариев);
READ_VERSIONS = 512 (право на просмотр версий документа);
EDIT_VERSIONS = 1024 (право на восстановление версий документа);
EDIT_METADATA = 2048 (право на редактирование свойств документа);
READ_METADATA = 4096 (право на просмотр свойств документа);
EDIT_CATEGORIES = 8192 (право на редактирование классификатора документа);
READ_CATEGORIES = 16384 (право на просмотр классификатора документа);
ADD_DOCUMENT_REFERENCES = 32768 (право на добавление документа в список ссылок документа);
EDIT_DOCUMENT_REFERENCES = 65536 (право на редактирование списка ссылок документа);
DELETE_DOCUMENT_REFERENCES = 131072 (право на удаление ссылок документа);
READ_DOCUMENT_REFERENCES = 262144 (право на просмотр списка ссылок документа);
LOAD_DOCUMENT = 524288 (право на загрузку файла документа);
MOVE = 2097152 (право на перемещение / переименовывание элемента);
CHANGE_PERMISSION = 4194304 (право на назначение прав);
Примечание. Наличие всех прав должно
соответствовать максимальному значению переменной
int
в java
, т.е.
значению 2147483647. Отсутствие прав - значению 0.
mime
- mime тип файла (отображается только
при значении is_folder
= «false»);
icon
- ссылка до иконки файла (отображается
только при значении is_folder
= «false»);
parents
- массив идентификаторов
родительских папок относительно дерева, начиная с самого
корня;
ai_type
- тип элемента хранилища, один из
следующих вариантов:
ai_folder
- папка;
ai_document
- текстовый файл;
ai_image
- файл изображения;
ai_audio
- аудиофайл;
ai_video
- видеофайл;
ai_application
- прочие файлы.
Таким образом, набор параметров для папки и для файла выглядит следующим образом:
Папка | Файл |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
|
|
|
|
В случае неуспешного выполнения вовзращается
json
с полями:
errorCode
- код выполнения (число, отличное
от 0);
errorMessage
- сообщение об ошибке (см.
ниже).
Альтернативные потоки событий.
Альтернативный поток №1. Параметр elementID
не передан, либо он пустой. Сервер возвращает ошибку:
Не передан параметр elementID
действие не осуществляется;
Альтернативный поток №2. Передан некорректный (несуществующий)
параметр elementID
. Сервер возвращает
ошибку:
Передан некорректный параметр elementID
действие не осуществляется;
Пример возвращаемого массива
{ "identifier": "f5003070-3740-4920-a4c5-01f8bf440774", "is_folder": false, "size": "19644", "path": "/company_root/Проект/Файл1.odt", "name": "Файл1.odt", "modified": "2013-03-13 16:35:45", "userName": "Слепаков Иван И.", "userID": "ee71a4c6-888a-4f04-86de-44ab394f5749", "right": 7, "mime ": "application/vnd.oasis.opendocument.text", "icon": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл1.odt", "parents": ["d1f91787-ac5d-4650-a7c0-1cdfbdd12165", "5860da7f-0615-4f46-8264-d8605d97ef9e"], "ai_type": "ai_document" }