Эта функция предназначена для обработки информации связанной с вложениями объекта
Параметры функции:
attachments: объект классаDiffAttachments, переданный для обработки,lang: объект типаstring- строка, содержащая “ключ” языка для выбора соответствующего шаблона при подготовке строки.
Результат работы функции:
- объект типа
string, содержащий извлеченную информацию.
Алгоритм работы функции:
В зависимости от действий с вложениями возможны следующие значения атрибутов переданного объекта attachments:
| Действие | Значение атрибутов в необработанном WebHook: |
|---|---|
| добавление вложений | ”data”: { … “change”: { … “diff”: { “attachments”: { “new”: [ { “id”: 1, “filename”: “filename.ext”, “url”: “http://permalink_to_file”, “attached_file”: “path_to_file/filename.ext”, “thumbnail_file”: null, “is_deprecated”: false, “description”: "", “order”: 0 }, { “id”: 2, “filename”: “filename.ext”, “url”: “http://permalink_to_file”, “attached_file”: “path_to_file/filename.ext”, “thumbnail_file”: null, “is_deprecated”: false, “description”: "", “order”: 0 }, ], “changed”: [], “deleted”: [] } } } } |
| изменение вложений | ”data”: { … “change”: { … “diff”: { “attachments”: { “new”: [], “changes”: { “description”: [ "", “test” ], “is_deprecated”: [ false, true ] } “deleted”: [] } } } |
| удаление вложений | ”data”: { … “diff”: { “attachments”: { “new”: [], “changed”: [], “deleted”: [ { “id”: 1, “url”: “http://permalink_to_file” “filename”: “filename.ext”, “description”: "", “attached_file”: “path_to_file/filename.ext”, “is_deprecated”: false, “thumbnail_file”: null } ] } } } |
В зависимости от значения атрибута new, changed, deleted определяется вид действия с вложениями. | |
| Вложения могут быть добавлены группой (сразу несколько файлов). Удаление и изменение вложений возможно только по одному вложению за операцию. | |
В существующем вложении могут быть изменены: описание (атрибут - description) и метка “устаревший” (is_deprecated). При этом в сформированном WebHook отсутствует информация о том, какой именно объект изменен. Поэтому функцией формируется абстрактное текстовое сообщение, не содержащее подробностей о измененном файле. |
Пример вызова функции:
attachment_string = get_attachment_string(
attachments=payload.change.diff.attachments, lang="en")