Формулировка проблемы: для реализации задач мобильного клиента необходимо доработать API-метод, позволяющий получить содержимое папок хранилища.
Решение: необходимо доработать метод
rest/api/storage/list
, добавив к его выходным
параметрам новые данные: иконку файла и права доступа на папки /
файлы. Опишем метод полностью.
URL метода: rest/api/storage/list
.
Тип запроса: GET
.
Метод принимает следующие строковые параметры:
parentID
- идентификатор папки (не обяз.);
getOnlyFolder
(true/false) - отображать ли
только папки (не обяз., по умолчанию значение false);
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
Если не передавать параметр parentID
, то метод
должен возвращать папки хранилища первого уровня для авторизованного
пользователя.
Если не передавать параметр getOnlyFolder
, то
метод должен возвращать все содержимое (и папки, и файлы) только тех
папок, на которые у пользователя есть хоть какой-нибудь набор прав.
Если же передавать параметр getOnlyFolder = true
,
то метод должен возвращать только дочерние папки, включая те, на
которые у пользователя отсутствуют права.
Примечание: к последнему случаю относятся только те варианты настройки хранилища, при котором у родителя данной папки, в которой у пользователя отсутствуют права, права присутствуют.
В случае успешного выполнения возвращаемый json
содержит, в свою очередь, список 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»).
Таким образом, набор параметров для папки и для файла выглядит следующим образом:
Папка | Файл |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
Порядок следования json
'ов должен соответствовать
порядку следования папок и файлов в хранилище.
В случае неуспешного выполнения вовзращается json
с полями:
errorCode
- код выполнения (число, отличное
от 0);
errorMessage
- "Ошибка получения
содержимого папки".
Альтернативные потоки событий.
Альтернативный поток №1. Передан некорректный (несуществующий)
параметр parentID
. Сервер возвращает ошибку:
Передан некорректный параметр parentID
действие не осуществляется;
Альтернативный поток №2. На папку из параметра
parentID
отсутствует какой-либо набор прав.
Сервер возвращает ошибку:
Недостаточно прав для выполнения действия
действие не осуществляется.
Пример возвращаемого массива для папок
[ { "identifier": "5719212b-97b9-4558-9e67-baa04d0adc62", "is_folder": true, "size": "0", "path": "/aiservice/home/ee71a4c6-888a-4f04-86de-44ab394f5749", "name": "Мои документы", "modified": "0007-05-04 10:12:00", "userName": "Слепаков Иван И.", "userID": "ee71a4c6-888a-4f04-86de-44ab394f5749", "right": 7, }, { "identifier": "91d1816a-b30e-47ea-988c-bd8864daa253", "is_folder": true, "size": "0", "path": "/company_root", "name": "company_root", "modified": "2011-10-10 09:13:39", "userName": " ", "userID": "0000-0000-0000-0002", "right": 7, } ]
Пример возвращаемого массива для файлов
[ { "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" }, { "identifier": "a8bb8fba-b418-4fcb-9b86-519c261c446f", "is_folder": false, "size": "850", "path": "/company_root/Проект/Файл2.htd", "name": "Файл2.htd", "modified": "0016-05-03 03:15:00", "userName": "Слепаков Иван И.", "userID": "ee71a4c6-888a-4f04-86de-44ab394f5749", "right": 7, "mime ": "text/htd", "icon": "rest/api/storage/icons/get?aiType=ai_htd&fileName=Файл2.htd" }, { "identifier": "15df7b65-67a6-4164-abfd-c68402e39e04", "is_folder": false, "size": "1057792", "path": "/company_root/Проект/Файл3.doc", "name": "Файл3.doc", "modified": "0017-05-03 03:23:00", "userName": "Слепаков Иван И.", "userID": "ee71a4c6-888a-4f04-86de-44ab394f5749", "right": 7, "mime ": "application/msword", "icon": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл3.doc" }, { "identifier": "5ed43228-ff3f-4701-8246-f63136cfc54f", "is_folder": false, "size": "2516096", "path": "/company_root/Проект/Файл4.mp3", "name": "Файл4.mp3", "modified": "0017-05-03 03:44:00", "userName": "Слепаков Иван И.", "userID": "ee71a4c6-888a-4f04-86de-44ab394f5749", "right": 7, "mime ": "audio/mpeg", "icon": "rest/api/storage/icons/get?aiType=ai_audio&fileName=Файл4.mp3" }, { "identifier": "7af4e948-e786-4c42-bfd1-c4976d82be03", "is_folder": false, "size": "16896", "path": "/company_root/Проект/Файл5.xls", "name": "Файл5.xls", "modified": "0017-05-03 03:06:00", "userName": "Васнецов Игорь И.", "userID": "0fb16c6a-54b8-45e1-b544-654eaf5df2e5", "right": 7, "mime ": "application/vnd.ms-excel", "icon": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл5.xls" }, { "identifier": "b5c9fc9b-e1e2-4dc6-a7e8-176389a2de3b", "is_folder": false, "size": "2831872", "path": "/company_root/Проект/Файл6.ppt", "name": "Файл6.ppt", "modified": "0017-05-03 03:28:00", "userName": "Слепаков Иван И.", "userID": "ee71a4c6-888a-4f04-86de-44ab394f5749", "right": 7, "mime ": "application/vnd.ms-powerpoint", "icon": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл6.ppt" }, { "identifier": "2f2ec453-9bae-42c8-8308-f9105b531867", "is_folder": false, "size": "325885", "path": "/company_root/Проект/Файл7.pdf", "name": "Файл7.pdf", "modified": "0017-05-03 03:32:00", "userName": "Бобров Степан Е.", "userID": "0db332d4-9dc6-4323-ab3d-f6b782e5d585", "right": 7, "mime ": "application/pdf", "icon": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл7.pdf" }, ]