1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-26 05:37:27 +02:00

Преобразование OPI -> OInt (workflow)

This commit is contained in:
Vitaly the Alpaca 2024-04-22 07:56:45 +00:00 committed by Vitaly the Alpaca (bot)
parent 4e4ccd9c58
commit 7ab1f6cd96
7 changed files with 88 additions and 67 deletions

View File

@ -730,9 +730,9 @@ 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: Отправить/Удалить эфимерное
- name: Отправить/Удалить эфемерное
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ОтправитьУдалитьЭфимерное"
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ОтправитьУдалитьЭфемерное"
- name: Получить отложенные сообщения
if: ${{ cancelled() }} == false

View File

@ -92,16 +92,17 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ОтправитьСообщение(Знач Токен, Знач Канал, Знач Текст = "", Знач ДатаОтправки = "", Знач Блоки = "") Экспорт
Строка_ = "Строка";
ЕстьДата = ЗначениеЗаполнено(ДатаОтправки);
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Если ЗначениеЗаполнено(Блоки) И Не ТипЗнч(Блоки) = Тип("Строка") Тогда
Если ЗначениеЗаполнено(Блоки) И Не ТипЗнч(Блоки) = Тип(Строка_) Тогда
OPI_ПреобразованиеТипов.ПолучитьМассив(Блоки);
КонецЕсли;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("channel", Канал, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("blocks" , Блоки, "Коллекция", Параметры);
Если ЕстьДата Тогда
@ -121,7 +122,7 @@
КонецФункции
// Отправить эфимерное сообщение
// Отправить эфемерное сообщение
// Отправляет сообщение, которое приходит в канал, но видно
// только конкретному пользователю
//
@ -134,22 +135,24 @@
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ОтправитьЭфимерноеСообщение(Знач Токен
Функция ОтправитьЭфемерноеСообщение(Знач Токен
, Знач Канал
, Знач Текст = ""
, Знач Пользователь = ""
, Знач Блоки = "") Экспорт
Если ЗначениеЗаполнено(Блоки) И Не ТипЗнч(Блоки) = Тип("Строка") Тогда
Строка_ = "Строка";
Если ЗначениеЗаполнено(Блоки) И Не ТипЗнч(Блоки) = Тип(Строка_) Тогда
OPI_ПреобразованиеТипов.ПолучитьМассив(Блоки);
КонецЕсли;
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("user" , Пользователь, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("channel", Канал , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("user" , Пользователь, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("blocks" , Блоки , "Коллекция", Параметры);
URL = "https://slack.com/api/chat.postEphemeral";
@ -288,13 +291,14 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокОтветовНаСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач Курсор = "") Экспорт
Строка_ = "Строка";
URL = "https://slack.com/api/conversations.replies";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("ts" , Отметка, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("channel", Канал , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("ts" , Отметка, Строка_, Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
@ -656,10 +660,12 @@
// Соответствие Из КлючИЗначение - Блок картинки
Функция СформироватьБлокКартинку(Знач URL, Знач АльтернативныйТекст = "") Экспорт
Строка_ = "Строка";
Блок = Новый Соответствие;
OPI_Инструменты.ДобавитьПоле("type" , "image" , "Строка", Блок);
OPI_Инструменты.ДобавитьПоле("image_url", URL , "Строка", Блок);
OPI_Инструменты.ДобавитьПоле("alt_text" , АльтернативныйТекст , "Строка", Блок);
OPI_Инструменты.ДобавитьПоле("type" , "image" , Строка_, Блок);
OPI_Инструменты.ДобавитьПоле("image_url", URL , Строка_, Блок);
OPI_Инструменты.ДобавитьПоле("alt_text" , АльтернативныйТекст , Строка_, Блок);
Возврат Блок;

View File

@ -298,6 +298,8 @@
// Типы: audio, document, photo, video
// Нельзя замешивать разные типы!
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов);
@ -312,9 +314,9 @@
ДобавитьИдентификаторЧата(IDЧата, Параметры);
СформироватьМассивМедиа(СоответствиеФайлов, Текст, СтруктураФайлов, Медиа);
OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("media" , Медиа , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Текст , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("media" , Медиа , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура, "СтрокаФайла", Параметры);
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, СтруктураФайлов, "mixed");
@ -337,15 +339,16 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ОтправитьМестоположение(Знач Токен, Знач IDЧата, Знач Широта, Знач Долгота, Знач Клавиатура = "") Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата);
URL = "api.telegram.org/bot" + Токен + "/sendLocation";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("latitude" , Широта , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("longitude" , Долгота , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("latitude" , Широта , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("longitude" , Долгота , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура , "СтрокаФайла", Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
@ -371,16 +374,17 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ОтправитьКонтакт(Знач Токен, Знач IDЧата, Знач Имя, Знач Фамилия, Знач Телефон, Знач Клавиатура = "") Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата);
URL = "api.telegram.org/bot" + Токен + "/sendContact";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown", "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("first_name" , Имя , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("last_name" , Фамилия , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("phone_number", Телефон , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown", Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("first_name" , Имя , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("last_name" , Фамилия , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("phone_number", Телефон , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура, "СтрокаФайла", Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
@ -475,14 +479,15 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция Бан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/banChatMember";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("user_id" , IDПользователя, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("user_id" , IDПользователя, Строка_, Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
@ -502,14 +507,15 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция Разбан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/unbanChatMember";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("user_id" , IDПользователя, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("user_id" , IDПользователя, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("only_if_banned", Ложь , "Булево", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
@ -536,15 +542,16 @@
, Знач ДатаИстечения = ""
, Знач ЛимитПользователей = 0) Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/createChatInviteLink";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("name" , Заголовок , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("member_limit" , ЛимитПользователей, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("name" , Заголовок , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("member_limit" , ЛимитПользователей, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("expire_date" , ДатаИстечения , "Дата" , Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
@ -565,14 +572,15 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗакрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/pinChatMessage";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("message_id" , IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("message_id" , IDСообщения, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("disable_notification", Ложь , "Булево", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
@ -593,14 +601,15 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ОткрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/unpinChatMessage";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, Строка_, Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
@ -983,13 +992,14 @@
, Знач IDИконки = Неопределено
, Знач IDТемы = "")
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("name" , Заголовок, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("icon_custom_emoji_id", IDИконки , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("message_thread_id" , IDТемы , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("name" , Заголовок, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("icon_custom_emoji_id", IDИконки , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("message_thread_id" , IDТемы , Строка_, Параметры);
Если ЗначениеЗаполнено(IDТемы) Тогда
Метод = "/editForumTopic";

View File

@ -185,12 +185,13 @@
КонецЕсли;
Строка_ = "Строка";
Расширение = СтрЗаменить(Расширение, ".", "");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("URL" , URL , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("URL" , URL , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, Строка_, Параметры);
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, Параметры);

View File

@ -2883,8 +2883,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСсылкуНаСообщение");
Проверка_СлакОк(Результат);
Отметки.Добавить(Отметка);
МассивБлоков = Новый Массив;
@ -2933,7 +2932,7 @@
КонецПроцедуры
Процедура Слак_ОтправитьУдалитьЭфимерное() Экспорт
Процедура Слак_ОтправитьУдалитьЭфемерное() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel");
@ -2942,7 +2941,7 @@
Текст = "Тестовое сообщение 1";
Блок = OPI_Slack.СформироватьБлокКартинку(Картинка, "Yo");
Результат = OPI_Slack.ОтправитьЭфимерноеСообщение(Токен, Канал, Текст, Пользователь, Блок);
Результат = OPI_Slack.ОтправитьЭфемерноеСообщение(Токен, Канал, Текст, Пользователь, Блок);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьСообщение");

View File

@ -40,17 +40,20 @@
Функция ПолучитьСоответствиеРазделовТестирования() Экспорт
СтандартныеЗависимости = "[Decode, Build]";
ЗависимостиГугл = "Testing-GoogleWorkspace";
Разделы = Новый Соответствие;
Разделы.Вставить("Telegram" , "[Decode, Build]");
Разделы.Вставить("VK" , "[Decode, Build]");
Разделы.Вставить("Viber" , "[Decode, Build]");
Разделы.Вставить("Twitter" , "[Decode, Build]");
Разделы.Вставить("YandexDisk" , "[Decode, Build]");
Разделы.Вставить("GoogleWorkspace", "[Decode, Build]");
Разделы.Вставить("GoogleCalendar" , "Testing-GoogleWorkspace");
Разделы.Вставить("GoogleDrive" , "Testing-GoogleWorkspace");
Разделы.Вставить("Notion" , "[Decode, Build]");
Разделы.Вставить("Slack" , "[Decode, Build]");
Разделы.Вставить("Telegram" , СтандартныеЗависимости);
Разделы.Вставить("VK" , СтандартныеЗависимости);
Разделы.Вставить("Viber" , СтандартныеЗависимости);
Разделы.Вставить("Twitter" , СтандартныеЗависимости);
Разделы.Вставить("YandexDisk" , СтандартныеЗависимости);
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
Разделы.Вставить("Notion" , СтандартныеЗависимости);
Разделы.Вставить("Slack" , СтандартныеЗависимости);
Возврат Разделы;
@ -174,7 +177,7 @@
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьСообщение" , "Отправить/Удалить сообщение" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьЭфимерное" , "Отправить/Удалить эфимерное" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьЭфемерное" , "Отправить/Удалить эфемерное" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьОтложенныеСообщения" , "Получить отложенные сообщения" , Слак);
НовыйТест(ТаблицаТестов, "Слак_СоздатьАрхивироватьКанал" , "Создать/Архивировать канал" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокКаналов" , "Получить список каналов" , Слак);

View File

@ -355,7 +355,9 @@
СоответствиеСимволов.Вставить("{", "\{");
СоответствиеСимволов.Вставить("}", "\}");
СоответствиеСимволов.Вставить(".", "\.");
Иначе
Возврат;
КонецЕсли;
Для Каждого СимволМассива Из СоответствиеСимволов Цикл
@ -408,7 +410,7 @@
Если Тип = "Дата" Тогда
OPI_ПреобразованиеТипов.ПолучитьДату(Значение);
Значение = OPI_Инструменты.UNIXTime(Значение);
Значение = UNIXTime(Значение);
ИначеЕсли Тип = "Коллекция" Тогда
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Значение);