1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-06-20 09:19:27 +02:00

SL: Внешние файлы

This commit is contained in:
Anton
2024-04-25 19:50:30 +03:00
parent 908ba34418
commit 2feb4143f3
3 changed files with 195 additions and 14 deletions
+133
View File
@@ -805,6 +805,126 @@
#КонецОбласти
#Область РаботаСУдаленнымиФайлами
// Получить список внешних файлов
// Получает список внешних файлов пользователя или канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Канал для отбора - channel
// Курсор - Строка - Указатель из предыдущего запроса, если строк результата > 100 - cursor
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокВнешнихФайлов(Знач Токен, Знач Канал = "", Знач Курсор = "") Экспорт
URL = "https://slack.com/api/files.remote.list";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор, "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить внешний файл
// Получает информацию о внешнем файле
//
// Параметры:
// Токен - Строка - Токен бота - token
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьВнешнийФайл(Знач Токен, Знач ИдентификаторФайла) Экспорт
URL = "https://slack.com/api/files.remote.info";
Ответ = УправлениеВнешнимФайлом(Токен, ИдентификаторФайла, URL);
Возврат Ответ;
КонецФункции
// Добавить внешний файл
// Добавляет новый внешний файл
//
// Параметры:
// Токен - Строка - Токен бота - token
// URL - Строка - URL к внешнему файлу - url
// Заголовок - Строка - Заголовок файла для Slack - title
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ДобавитьВнешнийФайл(Знач Токен, Знач URL, Знач Заголовок) Экспорт
URL = "https://slack.com/api/files.remote.add";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
UID = Строка(Новый УникальныйИдентификатор());
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("external_url", URL , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("external_id" , UID , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("title" , Заголовок , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Отправить внешний файл
// Отправляет внейшний файл по списку каналов
//
// Параметры:
// Токен - Строка - Токен бота - token
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
// МассивКаналов - Массив Из Строка - Массив каналов для отправки - channels
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ОтправитьВнешнийФайл(Знач Токен, Знач ИдентификаторФайла, Знач МассивКаналов) Экспорт
URL = "https://slack.com/api/files.remote.share";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКаналов);
МассивКаналов = СтрСоединить(МассивКаналов, ",");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("file" , ИдентификаторФайла , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("channels", МассивКаналов , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Удалить внешний файл
// Удаляет внешний файл из Slack
//
// Параметры:
// Токен - Строка - Токен бота - token
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция УдалитьВнешнийФайл(Знач Токен, Знач ИдентификаторФайла) Экспорт
URL = "https://slack.com/api/files.remote.remove";
Ответ = УправлениеВнешнимФайлом(Токен, ИдентификаторФайла, URL);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область ФормированиеБлоков
// Сформировать блок картинку
@@ -881,4 +1001,17 @@
КонецФункции
Функция УправлениеВнешнимФайлом(Знач Токен, Знач ИдентификаторФайла, Знач URL)
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("file", ИдентификаторФайла , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
@@ -184,6 +184,8 @@
НовыйТест(ТаблицаТестов, "Слак_ОткрытьЗакрытьДиалог" , "Открыть/Закрыть диалог" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокФайлов" , "Получить список файлов" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
Возврат ТаблицаТестов;
+60 -14
View File
@@ -3191,20 +3191,7 @@
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["name"]).Равно(ИмяФайла);
Результат = OPI_Slack.СделатьФайлПубличным(Токен, ЗагруженныйФайл["id"]);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СделатьФайлПубличным");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["permalink_public"]).Заполнено();
Результат = OPI_Slack.СделатьФайлПриватным(Токен, ЗагруженныйФайл["id"]);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СделатьФайлПриватным");
Проверка_СлакОк(Результат);
Для Каждого ЗагруженныйФайл Из МассивФайлов Цикл
Результат = OPI_Slack.УдалитьФайл(Токен, ЗагруженныйФайл);
@@ -3217,6 +3204,65 @@
КонецПроцедуры
Процедура Слак_ПолучитьСписокВФ() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel");
Результат = OPI_Slack.ПолучитьСписокВнешнихФайлов(Токен);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокВнешнихФайлов");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["files"]).ИмеетТип("Массив");
Результат = OPI_Slack.ПолучитьСписокВнешнихФайлов(Токен, Канал);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокВнешнихФайлов");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["files"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Слак_ЗагрузитьУдалитьВФ() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Файл = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Document");
Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel");
Заголовок = "Новый файл";
Результат = OPI_Slack.ДобавитьВнешнийФайл(Токен, Файл, Заголовок);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьВнешнийФайл");
ЗагруженныйФайл = Результат["file"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["title"]).Равно(Заголовок);
Результат = OPI_Slack.ПолучитьВнешнийФайл(Токен, ЗагруженныйФайл["id"]);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьВнешнийФайл");
ЗагруженныйФайл = Результат["file"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["title"]).Равно(Заголовок);
Результат = OPI_Slack.ОтправитьВнешнийФайл(Токен, ЗагруженныйФайл["id"], Канал);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьВнешнийФайл");
Проверка_СлакОк(Результат);
Результат = OPI_Slack.УдалитьВнешнийФайл(Токен, ЗагруженныйФайл["id"]);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьВнешнийФайл");
Проверка_СлакОк(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти