From 2feb4143f3bdf845000cbe4b1704edd3238564a1 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 25 Apr 2024 19:50:30 +0300 Subject: [PATCH] =?UTF-8?q?SL:=20=D0=92=D0=BD=D0=B5=D1=88=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OPI/src/CommonModules/OPI_Slack/Module.bsl | 133 ++++++++++++++++++ .../OPI_ПолучениеДанныхТестов/Module.bsl | 2 + OPI/src/CommonModules/OPI_Тесты/Module.bsl | 74 ++++++++-- 3 files changed, 195 insertions(+), 14 deletions(-) diff --git a/OPI/src/CommonModules/OPI_Slack/Module.bsl b/OPI/src/CommonModules/OPI_Slack/Module.bsl index a029f924511..13071a5a581 100644 --- a/OPI/src/CommonModules/OPI_Slack/Module.bsl +++ b/OPI/src/CommonModules/OPI_Slack/Module.bsl @@ -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, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/OPI/src/CommonModules/OPI_ПолучениеДанныхТестов/Module.bsl b/OPI/src/CommonModules/OPI_ПолучениеДанныхТестов/Module.bsl index 586e98f704e..ce772fc5381 100644 --- a/OPI/src/CommonModules/OPI_ПолучениеДанныхТестов/Module.bsl +++ b/OPI/src/CommonModules/OPI_ПолучениеДанныхТестов/Module.bsl @@ -184,6 +184,8 @@ НовыйТест(ТаблицаТестов, "Слак_ОткрытьЗакрытьДиалог" , "Открыть/Закрыть диалог" , Слак); НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокФайлов" , "Получить список файлов" , Слак); НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак); + НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак); + НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак); Возврат ТаблицаТестов; diff --git a/OPI/src/CommonModules/OPI_Тесты/Module.bsl b/OPI/src/CommonModules/OPI_Тесты/Module.bsl index 526de39ddf9..2241ded8c43 100644 --- a/OPI/src/CommonModules/OPI_Тесты/Module.bsl +++ b/OPI/src/CommonModules/OPI_Тесты/Module.bsl @@ -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_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьВнешнийФайл"); + + Проверка_СлакОк(Результат); + +КонецПроцедуры + #КонецОбласти #КонецОбласти