mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-11-28 09:08:38 +02:00
Преобразование OPI -> OInt (workflow)
This commit is contained in:
parent
908ba34418
commit
c4e9e8ba40
8
.github/workflows/oint_test.yml
vendored
8
.github/workflows/oint_test.yml
vendored
@ -750,6 +750,14 @@ jobs:
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ОткрытьЗакрытьДиалог"
|
||||
|
||||
- name: Получить список файлов
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ПолучитьСписокФайлов"
|
||||
|
||||
- name: Загрузить/Удалить файл
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ЗагрузитьУдалитьФайл"
|
||||
|
||||
Encode:
|
||||
runs-on: ubuntu-latest
|
||||
needs: Testing-Twitter
|
||||
|
@ -650,6 +650,161 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСФайлами
|
||||
|
||||
// Получить список файлов
|
||||
// Получает список файлов бота или канала
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен бота - token
|
||||
// Канал - Строка - Канал для отбора - channel
|
||||
// НомерСтраницы - Число, Строка - Номер страницы - page
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция ПолучитьСписокФайлов(Знач Токен, Знач Канал = "", Знач НомерСтраницы = 1) Экспорт
|
||||
|
||||
URL = "https://slack.com/api/files.list";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("page" , НомерСтраницы, "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Загрузить файл
|
||||
// Загружает файл на сервера Slack
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен бота - token
|
||||
// Файл - Строка,ДвоичныеДанные - Файл для загрузки - file
|
||||
// ИмяФайла - Строка - Имя файла с расширением - filename
|
||||
// Заголовок - Строка - Имя файла в Slack - title
|
||||
// Канал - Строка - ID канала - channel
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач ИмяФайла, Знач Заголовок, Знач Канал = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяФайла);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Заголовок);
|
||||
|
||||
Upload_url = "upload_url";
|
||||
File_id = "file_id";
|
||||
URL = "https://slack.com/api/files.getUploadURLExternal";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
Размер = Файл.Размер();
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("filename", ИмяФайла, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("length" , Размер , "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
URL = Ответ[Upload_url];
|
||||
Идентификатор = Ответ[File_id];
|
||||
|
||||
Если Не ЗначениеЗаполнено(URL) Или Не ЗначениеЗаполнено(Идентификатор) Тогда
|
||||
Возврат Ответ;
|
||||
КонецЕсли;
|
||||
|
||||
Файлы = Новый Соответствие;
|
||||
Файлы.Вставить(ИмяФайла, Файл);
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart(URL, , Файлы, , Заголовки);
|
||||
URL = "https://slack.com/api/files.completeUploadExternal";
|
||||
ФайлСлак = Новый Структура("id, title", Идентификатор, Заголовок);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("filename" , ИмяФайла, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("channel_id", Канал , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("files" , ФайлСлак, "Массив", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить данные файла
|
||||
// Получает информацию о файле
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен бота - token
|
||||
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция ПолучитьДанныеФайла(Знач Токен, Знач ИдентификаторФайла) Экспорт
|
||||
|
||||
URL = "https://slack.com/api/files.info";
|
||||
Ответ = УправлениеФайлом(Токен, ИдентификаторФайла, URL, "GET");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить файл
|
||||
// Удаляет файл на Slack
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен бота - token
|
||||
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция УдалитьФайл(Знач Токен, Знач ИдентификаторФайла) Экспорт
|
||||
|
||||
URL = "https://slack.com/api/files.delete";
|
||||
Ответ = УправлениеФайлом(Токен, ИдентификаторФайла, URL);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сделать файл публичным
|
||||
// Создает публичный URL для файла. Требует токен пользователя
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен пользователя - token
|
||||
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция СделатьФайлПубличным(Знач Токен, Знач ИдентификаторФайла) Экспорт
|
||||
|
||||
URL = "https://slack.com/api/files.sharedPublicURL";
|
||||
Ответ = УправлениеФайлом(Токен, ИдентификаторФайла, URL);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сделать файл приватным
|
||||
// Удаляет публичный URL у файла. Требует токен пользователя
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен пользователя - token
|
||||
// ИдентификаторФайла - Строка - Идентификатор файла - fileid
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция СделатьФайлПриватным(Знач Токен, Знач ИдентификаторФайла) Экспорт
|
||||
|
||||
URL = "https://slack.com/api/files.revokePublicURL";
|
||||
Ответ = УправлениеФайлом(Токен, ИдентификаторФайла, URL);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ФормированиеБлоков
|
||||
|
||||
// Сформировать блок картинку
|
||||
@ -708,4 +863,22 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УправлениеФайлом(Знач Токен, Знач ИдентификаторФайла, Знач URL, Знач ВидЗапроса = "POST")
|
||||
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
ВидЗапроса = вРег(ВидЗапроса);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("file", ИдентификаторФайла , "Строка", Параметры);
|
||||
|
||||
Если ВидЗапроса = "POST" Тогда
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
Иначе
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -3140,6 +3140,83 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Слак_ПолучитьСписокФайлов() Экспорт
|
||||
|
||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
|
||||
Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel");
|
||||
|
||||
Результат = OPI_Slack.ПолучитьСписокФайлов(Токен, Канал);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокФайлов");
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["files"]).ИмеетТип("Массив");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Слак_ЗагрузитьУдалитьФайл() Экспорт
|
||||
|
||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
|
||||
Файл = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Document");
|
||||
Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel");
|
||||
МассивФайлов = Новый Массив;
|
||||
ИмяФайла = "megadoc.docx";
|
||||
Заголовок = "Новый файл";
|
||||
|
||||
Результат = OPI_Slack.ЗагрузитьФайл(Токен, Файл, ИмяФайла, Заголовок);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл");
|
||||
|
||||
ЗагруженныйФайл = Результат["files"][0];
|
||||
МассивФайлов.Добавить(ЗагруженныйФайл["id"]);
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["name"]).Равно(ИмяФайла);
|
||||
|
||||
Результат = OPI_Slack.ЗагрузитьФайл(Токен, Файл, ИмяФайла, Заголовок, Канал);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл");
|
||||
|
||||
ЗагруженныйФайл = Результат["files"][0];
|
||||
МассивФайлов.Добавить(ЗагруженныйФайл["id"]);
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["name"]).Равно(ИмяФайла);
|
||||
|
||||
Результат = OPI_Slack.ПолучитьДанныеФайла(Токен, ЗагруженныйФайл["id"]);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьФайл");
|
||||
|
||||
ЗагруженныйФайл = Результат["file"];
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["name"]).Равно(ИмяФайла);
|
||||
|
||||
Результат = OPI_Slack.СделатьФайлПубличным(Токен, ЗагруженныйФайл["id"]);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СделатьФайлПубличным");
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗагруженныйФайл["permalink_public"]).Заполнено();
|
||||
|
||||
Результат = OPI_Slack.СделатьФайлПриватным(Токен, ЗагруженныйФайл["id"]);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СделатьФайлПриватным");
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
|
||||
Для Каждого ЗагруженныйФайл Из МассивФайлов Цикл
|
||||
|
||||
Результат = OPI_Slack.УдалитьФайл(Токен, ЗагруженныйФайл);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьФайл");
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -182,6 +182,8 @@
|
||||
НовыйТест(ТаблицаТестов, "Слак_СоздатьАрхивироватьКанал" , "Создать/Архивировать канал" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокКаналов" , "Получить список каналов" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ОткрытьЗакрытьДиалог" , "Открыть/Закрыть диалог" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокФайлов" , "Получить список файлов" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
|
@ -421,6 +421,9 @@
|
||||
ИначеЕсли Тип = "СтрокаФайла" Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение, Истина);
|
||||
|
||||
ИначеЕсли Тип = "Массив" Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(Значение);
|
||||
|
||||
Иначе
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user