Задача [API58]: Доработка API для получения содержимого папок хранилища

Формулировка проблемы: для реализации задач мобильного клиента необходимо доработать API-метод, позволяющий получить содержимое папок хранилища.

Решение: необходимо доработать метод rest/api/storage/list, добавив к его выходным параметрам новые данные: иконку файла и права доступа на папки / файлы. Опишем метод полностью.

URL метода: rest/api/storage/list.

Тип запроса: GET.

Метод принимает следующие строковые параметры:

Если не передавать параметр parentID, то метод должен возвращать папки хранилища первого уровня для авторизованного пользователя.

Если не передавать параметр getOnlyFolder, то метод должен возвращать все содержимое (и папки, и файлы) только тех папок, на которые у пользователя есть хоть какой-нибудь набор прав.

Если же передавать параметр getOnlyFolder = true, то метод должен возвращать только дочерние папки, включая те, на которые у пользователя отсутствуют права.

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

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

Таким образом, набор параметров для папки и для файла выглядит следующим образом:

Папка Файл
  • identifier

  • identifier

  • is_folder

  • is_folder

  • size

  • size

  • path

  • path

  • name

  • name

  • modified

  • modified

  • userName

  • userName

  • userID

  • userID

  • right

  • right

  • mime

  • icon

Порядок следования json'ов должен соответствовать порядку следования папок и файлов в хранилище.

В случае неуспешного выполнения вовзращается json с полями:

Альтернативные потоки событий.

Пример возвращаемого массива для папок

[
  {
    "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"
  },
]