diff --git a/.github/workflows/oint_test.yml b/.github/workflows/oint_test.yml index ccca6713a8..a1a7d5e785 100644 --- a/.github/workflows/oint_test.yml +++ b/.github/workflows/oint_test.yml @@ -730,6 +730,10 @@ 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 "Слак_ПолучитьОтложенныеСообщения" + Encode: runs-on: ubuntu-latest needs: Testing-Twitter diff --git a/OInt/core/Modules/OPI_Slack.os b/OInt/core/Modules/OPI_Slack.os index 5b3681816a..0fa0329d85 100644 --- a/OInt/core/Modules/OPI_Slack.os +++ b/OInt/core/Modules/OPI_Slack.os @@ -82,33 +82,59 @@ // Отправляет сообщение в выбранный час // // Параметры: -// Токен - Строка - Токен бота - token -// Канал - Строка - Идентификатор канала - channel -// Текст - Строка - Текст сообщения - text -// МассивБлоков - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков +// Токен - Строка - Токен бота - token +// Канал - Строка - Идентификатор канала - channel +// Текст - Строка - Текст сообщения - text +// ДатаОтправки - Дата - Дата отправки для отложенного сообщения - date +// МассивБлоков - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack -Функция ОтправитьСообщение(Знач Токен, Знач Канал, Знач Текст = "", Знач МассивБлоков = "") Экспорт +Функция ОтправитьСообщение(Знач Токен, Знач Канал, Знач Текст = "", Знач ДатаОтправки = "", Знач МассивБлоков = "") Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Канал); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); ЕстьБлоки = ЗначениеЗаполнено(МассивБлоков); + ЕстьДата = ЗначениеЗаполнено(ДатаОтправки); - URL = "https://slack.com/api/chat.postMessage"; Заголовки = ПолучитьЗаголовокАвторизации(Токен); Параметры = Новый Структура; - Параметры.Вставить("channel", Канал); - Параметры.Вставить("text" , Текст); - - Если ЕстьБлоки Тогда - OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивБлоков); - Параметры.Вставить("blocks" , МассивБлоков); + OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("blocks" , МассивБлоков, "Коллекция", Параметры); + + Если ЕстьДата Тогда + + URL = "https://slack.com/api/chat.scheduleMessage"; + OPI_Инструменты.ДобавитьПоле("post_at", ДатаОтправки, "Дата", Параметры); + + Иначе + + URL = "https://slack.com/api/chat.postMessage"; + КонецЕсли; + + Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); + Возврат Ответ; + +КонецФункции + +Функция ИзменитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач Текст = "", Знач МассивБлоков = "") Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + Строка_ = "Строка"; + URL = "https://slack.com/api/chat.update"; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("channel", Канал , Строка_ , Параметры); + OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_ , Параметры); + OPI_Инструменты.ДобавитьПоле("ts" , Отметка , Строка_ , Параметры); + OPI_Инструменты.ДобавитьПоле("blocks" , МассивБлоков, "Коллекция", Параметры); + Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); Возврат Ответ; @@ -119,31 +145,71 @@ // Удаляет сообщение канала по timestamp // // Параметры: -// Токен - Строка - Токен бота - token -// Канал - Строка - Идентификатор канала - channel -// Отметка - Строка - Временная отметка сообщения - ts +// Токен - Строка - Токен бота - token +// Канал - Строка - Идентификатор канала - channel +// Отметка - Строка - Временная отметка или ID сообщения - stamp +// ЭтоОтложенное - Булево - Признак удаления отложенного сообщения - issheduled // // Возвращаемое значение: // Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack -Функция УдалитьСообщение(Знач Токен, Знач Канал, Знач Отметка) Экспорт +Функция УдалитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач ЭтоОтложенное = Ложь) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Канал); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Отметка); + OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоОтложенное); - URL = "https://slack.com/api/chat.delete"; Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Если ЭтоОтложенное Тогда + URL = "https://slack.com/api/chat.deleteScheduledMessage"; + ПолеОтметки = "scheduled_message_id"; + Иначе + URL = "https://slack.com/api/chat.delete"; + ПолеОтметки = "ts"; + КонецЕсли; Параметры = Новый Структура; - Параметры.Вставить("channel", Канал); - Параметры.Вставить("ts" , Отметка); + OPI_Инструменты.ДобавитьПоле("channel" , Канал , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле(ПолеОтметки, Отметка, "Строка", Параметры); Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); Возврат Ответ; КонецФункции + +Функция ПолучитьСписокОтложенныхСообщений(Знач Токен, Знач Канал) Экспорт + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + URL = "https://slack.com/api/chat.scheduledMessages.list"; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка", Параметры); + + Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +Функция ПолучитьСсылкуНаСообщение(Знач Токен, Знач Канал, Знач Отметка) Экспорт + + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); + + URL = "https://slack.com/api/chat.getPermalink"; + Заголовки = ПолучитьЗаголовокАвторизации(Токен); + + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("channel" , Канал , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_ts", Отметка, "Строка", Параметры); + + Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + #КонецОбласти #Область ФормированиеБлоков @@ -159,14 +225,10 @@ // Соответствие Из КлючИЗначение - Блок картинки Функция СформироватьБлокКартинку(Знач URL, Знач АльтернативныйТекст = "") Экспорт - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - OPI_ПреобразованиеТипов.ПолучитьСтроку(АльтернативныйТекст); - - Блок = Новый Соответствие; - - Блок.Вставить("type" , "image"); - Блок.Вставить("image_url", URL); - Блок.Вставить("alt_text" , АльтернативныйТекст); + Блок = Новый Соответствие; + OPI_Инструменты.ДобавитьПоле("type" , "image" , "Строка", Блок); + OPI_Инструменты.ДобавитьПоле("image_url", URL , "Строка", Блок); + OPI_Инструменты.ДобавитьПоле("alt_text" , АльтернативныйТекст , "Строка", Блок); Возврат Блок; diff --git a/OInt/core/Modules/OPI_Telegram.os b/OInt/core/Modules/OPI_Telegram.os index 939acc20ad..c56b19c6e8 100644 --- a/OInt/core/Modules/OPI_Telegram.os +++ b/OInt/core/Modules/OPI_Telegram.os @@ -84,13 +84,12 @@ Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(URL); - Параметры_ = Новый Структура; - Параметры_.Вставить("url", URL); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("url", URL, "Строка", Параметры); URL = "api.telegram.org/bot" + Токен + "/setWebHook"; - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -137,22 +136,18 @@ , Знач Клавиатура = "" , Знач Разметка = "Markdown") Экспорт - OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Клавиатура, Истина); - + OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); OPI_Инструменты.ЗаменитьСпецСимволы(Текст); - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , Разметка); - Параметры_.Вставить("text" , Текст); - Параметры_.Вставить("reply_markup", Клавиатура); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура, "СтрокаФайла", Параметры); - ДобавитьИдентификаторЧата(IDЧата, Параметры_); + ДобавитьИдентификаторЧата(IDЧата, Параметры); URL = "api.telegram.org/bot" + Токен + "/sendMessage"; - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -305,8 +300,6 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Клавиатура, Истина); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СоответствиеФайлов); OPI_Инструменты.ЗаменитьСпецсимволы(Текст); @@ -314,18 +307,17 @@ URL = "api.telegram.org/bot" + Токен + "/sendMediaGroup"; СтруктураФайлов = Новый Структура; Медиа = Новый Массив; - - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , Разметка); - Параметры_.Вставить("caption" , Текст); - Параметры_.Вставить("reply_markup", Клавиатура); + Параметры = Новый Структура; - ДобавитьИдентификаторЧата(IDЧата, Параметры_); + ДобавитьИдентификаторЧата(IDЧата, Параметры); СформироватьМассивМедиа(СоответствиеФайлов, Текст, СтруктураФайлов, Медиа); - Параметры_.Вставить("media", Медиа); + OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("caption" , Текст , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("media" , Медиа , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура, "СтрокаФайла", Параметры); - Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed"); + Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, СтруктураФайлов, "mixed"); Возврат Ответ; @@ -347,21 +339,18 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Широта); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Долгота); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Клавиатура, Истина); URL = "api.telegram.org/bot" + Токен + "/sendLocation"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , "Markdown"); - Параметры_.Вставить("latitude" , OPI_Инструменты.ЧислоВСтроку(Широта)); - Параметры_.Вставить("longitude" , OPI_Инструменты.ЧислоВСтроку(Долгота)); - Параметры_.Вставить("reply_markup", Клавиатура); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("latitude" , Широта , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("longitude" , Долгота , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура , "СтрокаФайла", Параметры); - ДобавитьИдентификаторЧата(IDЧата, Параметры_); + ДобавитьИдентификаторЧата(IDЧата, Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -384,23 +373,19 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Фамилия); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Телефон); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Клавиатура, Истина); - URL = "api.telegram.org/bot" + Токен + "/sendContact"; + URL = "api.telegram.org/bot" + Токен + "/sendContact"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , "Markdown"); - Параметры_.Вставить("first_name" , Имя); - Параметры_.Вставить("last_name" , Фамилия); - Параметры_.Вставить("phone_number", Телефон); - Параметры_.Вставить("reply_markup", Клавиатура); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown", "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("first_name" , Имя , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("last_name" , Фамилия , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("phone_number", Телефон , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура, "СтрокаФайла", Параметры); - ДобавитьИдентификаторЧата(IDЧата, Параметры_); + ДобавитьИдентификаторЧата(IDЧата, Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -422,22 +407,21 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Вопрос); OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивОтветов); - OPI_ПреобразованиеТипов.ПолучитьСтроку(МассивОтветов, Истина); + OPI_ПреобразованиеТипов.ПолучитьБулево(Анонимный); URL = "api.telegram.org/bot" + Токен + "/sendPoll"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , "Markdown"); - Параметры_.Вставить("question" , Вопрос); - Параметры_.Вставить("options" , МассивОтветов); - Параметры_.Вставить("is_anonymous", ?(Анонимный, 1, 0)); - - ДобавитьИдентификаторЧата(IDЧата, Параметры_); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("question" , Вопрос , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("options" , МассивОтветов, "СтрокаФайла", Параметры); + + Параметры.Вставить("is_anonymous", ?(Анонимный, 1, 0)); + ДобавитьИдентификаторЧата(IDЧата, Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -461,15 +445,15 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(ОткудаID); OPI_ПреобразованиеТипов.ПолучитьСтроку(КудаID); - URL = "api.telegram.org/bot" + Токен + "/forwardMessage"; + URL = "api.telegram.org/bot" + Токен + "/forwardMessage"; - Параметры_ = Новый Структура; - Параметры_.Вставить("from_chat_id", ОткудаID); - Параметры_.Вставить("message_id" , IDОригинала); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("from_chat_id", ОткудаID , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_id" , IDОригинала, "Строка", Параметры); - ДобавитьИдентификаторЧата(КудаID, Параметры_); + ДобавитьИдентификаторЧата(КудаID, Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -492,17 +476,15 @@ Функция Бан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя); URL = "api.telegram.org/bot" + Токен + "/banChatMember"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode", "Markdown"); - Параметры_.Вставить("chat_id" , IDЧата); - Параметры_.Вставить("user_id" , IDПользователя); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("user_id" , IDПользователя, "Строка", Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -521,18 +503,16 @@ Функция Разбан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя); URL = "api.telegram.org/bot" + Токен + "/unbanChatMember"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , "Markdown"); - Параметры_.Вставить("chat_id" , IDЧата); - Параметры_.Вставить("user_id" , IDПользователя); - Параметры_.Вставить("only_if_banned", Ложь); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("user_id" , IDПользователя, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("only_if_banned", Ложь , "Булево", Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -557,26 +537,17 @@ , Знач ЛимитПользователей = 0) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Заголовок); - OPI_ПреобразованиеТипов.ПолучитьСтроку(ЛимитПользователей); - OPI_ПреобразованиеТипов.ПолучитьДату(ДатаИстечения); URL = "api.telegram.org/bot" + Токен + "/createChatInviteLink"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode", "Markdown"); - Параметры_.Вставить("chat_id" , IDЧата); - Параметры_.Вставить("name" , Заголовок); - - Если ЗначениеЗаполнено(ДатаИстечения) Тогда - ДатаИстечения = OPI_Инструменты.UNIXTime(ДатаИстечения); - Параметры_.Вставить("expire_date", ДатаИстечения); - КонецЕсли; - - Параметры_.Вставить("member_limit", ЛимитПользователей); - - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("name" , Заголовок , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("member_limit" , ЛимитПользователей, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("expire_date" , ДатаИстечения , "Дата" , Параметры); + + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -595,18 +566,16 @@ Функция ЗакрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСообщения); URL = "api.telegram.org/bot" + Токен + "/pinChatMessage"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , "Markdown"); - Параметры_.Вставить("chat_id" , IDЧата); - Параметры_.Вставить("message_id" , IDСообщения); - Параметры_.Вставить("disable_notification", Истина); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , "Markdown" , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_id" , IDСообщения, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("disable_notification", Ложь , "Булево", Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -625,17 +594,15 @@ Функция ОткрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDСообщения); URL = "api.telegram.org/bot" + Токен + "/unpinChatMessage"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode", "Markdown"); - Параметры_.Вставить("chat_id" , IDЧата); - Параметры_.Вставить("message_id", IDСообщения); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, "Строка", Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -653,15 +620,14 @@ Функция ПолучитьЧислоУчастников(Знач Токен, Знач IDЧата) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); URL = "api.telegram.org/bot" + Токен + "/getChatMemberCount"; - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode", "Markdown"); - Параметры_.Вставить("chat_id" , IDЧата); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode", "Markdown" , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -889,16 +855,14 @@ Функция ИзменитьИмяГлавнойТемыФорума(Знач Токен, Знач IDЧата, Знач Заголовок) Экспорт OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Заголовок); - URL = "api.telegram.org/bot" + Токен + "/editGeneralForumTopic"; + URL = "api.telegram.org/bot" + Токен + "/editGeneralForumTopic"; - Параметры_ = Новый Структура; - Параметры_.Вставить("chat_id", IDЧата); - Параметры_.Вставить("name" , Заголовок); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("chat_id", IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("name" , Заголовок, "Строка", Параметры); - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -920,18 +884,18 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDТемы); - Параметры_ = Новый Структура; - Параметры_.Вставить("chat_id", IDЧата); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_thread_id", IDТемы, "Строка", Параметры); Если ЗначениеЗаполнено(IDТемы) Тогда Метод = "/unpinAllForumTopicMessages"; - Параметры_.Вставить("message_thread_id", IDТемы); Иначе Метод = "/unpinAllGeneralForumTopicMessages"; КонецЕсли; URL = "api.telegram.org/bot" + Токен + Метод; - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -987,36 +951,27 @@ OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст); OPI_ПреобразованиеТипов.ПолучитьСтроку(Вид); - OPI_ПреобразованиеТипов.ПолучитьСтроку(Клавиатура, Истина); Расширение = ""; Метод = ""; ОпределитьМетодОтправки(Вид, Метод, Расширение); + ПреобразоватьДанныеФайла(Файл, Расширение, Вид); OPI_Инструменты.ЗаменитьСпецсимволы(Текст); - - Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда - ТекущийФайл = Новый Файл(Файл); - Расширение = ?(Вид = "document", ТекущийФайл.Расширение, Расширение); - OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); - КонецЕсли; - - Расширение = СтрЗаменить(Расширение, ".", "___"); - - Параметры_ = Новый Структура; - Параметры_.Вставить("parse_mode" , Разметка); - Параметры_.Вставить("caption" , Текст); - Параметры_.Вставить("reply_markup", Клавиатура); - ДобавитьИдентификаторЧата(IDЧата, Параметры_); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("caption" , Текст , "Строка" , Параметры); + OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура, "СтрокаФайла", Параметры); + + ДобавитьИдентификаторЧата(IDЧата, Параметры); СтруктураФайлов = Новый Структура; СтруктураФайлов.Вставить(Вид + Расширение, Файл); URL = "api.telegram.org/bot" + Токен + Метод; - Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed"); + Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, СтруктураФайлов, "mixed"); Возврат Ответ; @@ -1029,23 +984,21 @@ , Знач IDТемы = "") OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDТемы); - Параметры_ = Новый Структура; - Параметры_.Вставить("name" , Заголовок); - Параметры_.Вставить("chat_id" , IDЧата); - Параметры_.Вставить("icon_custom_emoji_id", IDИконки); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("name" , Заголовок, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("icon_custom_emoji_id", IDИконки , "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_thread_id" , IDТемы , "Строка", Параметры); Если ЗначениеЗаполнено(IDТемы) Тогда - Метод = "/editForumTopic"; - Параметры_.Вставить("message_thread_id", IDТемы); + Метод = "/editForumTopic"; Иначе Метод = "/createForumTopic"; КонецЕсли; - OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры_); - Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + Метод, Параметры_); + OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры); + Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + Метод, Параметры); Возврат Ответ; @@ -1054,8 +1007,6 @@ Функция УправлениеСостояниемТемыФорума(Знач Токен, Знач IDЧата, Знач Статус, Знач IDТемы = "") OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDТемы); Если ЗначениеЗаполнено(IDТемы) Тогда Форум = "Forum"; @@ -1063,18 +1014,14 @@ Форум = "GeneralForum"; КонецЕсли; - IDТемы = OPI_Инструменты.ЧислоВСтроку(IDТемы); - IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); - Метод = ОпределитьМетодУправленияФорумом(Статус, Форум); - Параметры_ = Новый Структура; - Параметры_.Вставить("chat_id", IDЧата); - - Если ЗначениеЗаполнено(IDТемы) Тогда - Параметры_.Вставить("message_thread_id", IDТемы); - КонецЕсли; + Метод = ОпределитьМетодУправленияФорумом(Статус, Форум); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата, "Строка", Параметры); + OPI_Инструменты.ДобавитьПоле("message_thread_id", IDТемы, "Строка", Параметры); + URL = "api.telegram.org/bot" + Токен + Метод; - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -1083,7 +1030,6 @@ Функция УправлениеВидимостьюГлавнойТемыФорума(Знач Токен, Знач IDЧата, Знач Скрыть) OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен); - OPI_ПреобразованиеТипов.ПолучитьСтроку(IDЧата); OPI_ПреобразованиеТипов.ПолучитьБулево(Скрыть); Если Скрыть Тогда @@ -1092,11 +1038,11 @@ Метод = "/unhideGeneralForumTopic"; КонецЕсли; - Параметры_ = Новый Структура; - Параметры_.Вставить("chat_id", IDЧата); + Параметры = Новый Структура; + OPI_Инструменты.ДобавитьПоле("chat_id", IDЧата, "Строка", Параметры); URL = "api.telegram.org/bot" + Токен + Метод; - Ответ = OPI_Инструменты.Get(URL, Параметры_); + Ответ = OPI_Инструменты.Get(URL, Параметры); Возврат Ответ; @@ -1169,12 +1115,12 @@ Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда - Двоичные = ТекущийФайл.Ключ; + Двоичные = ТекущийФайл.Ключ; OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Двоичные); - ЭтотФайл = Новый Файл(ТекущийФайл.Ключ); - - ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик) + ЭтотФайл = Новый Файл(ТекущийФайл.Ключ); + ИмяМедиа = ТекущийФайл.Значение + + Строка(Счетчик) + ?(ТекущийФайл.Значение = "document", ЭтотФайл.Расширение, ""); ПолноеИмяМедиа = СтрЗаменить(ИмяМедиа, ".", "___"); @@ -1188,7 +1134,7 @@ СтруктураФайлов.Вставить(ПолноеИмяМедиа, Двоичные); СтруктураМедиа = Новый Структура; - СтруктураМедиа.Вставить("type", ТекущийФайл.Значение); + СтруктураМедиа.Вставить("type" , ТекущийФайл.Значение); СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа); Если Счетчик = 0 Тогда @@ -1242,4 +1188,18 @@ КонецПроцедуры +Процедура ПреобразоватьДанныеФайла(Файл, Расширение, Вид) + + Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда + + ТекущийФайл = Новый Файл(Файл); + Расширение = ?(Вид = "document", ТекущийФайл.Расширение, Расширение); + OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл); + + КонецЕсли; + + Расширение = СтрЗаменить(Расширение, ".", "___"); + +КонецПроцедуры + #КонецОбласти diff --git a/OInt/tests/Modules/internal/OPI_Тесты.os b/OInt/tests/Modules/internal/OPI_Тесты.os index c4942e6334..da23d9bd25 100644 --- a/OInt/tests/Modules/internal/OPI_Тесты.os +++ b/OInt/tests/Modules/internal/OPI_Тесты.os @@ -2871,13 +2871,24 @@ OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["channel"]).Равно(Канал); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ts"]).Заполнено(); - Отметки.Добавить(Результат["ts"]); + Отметка = Результат["ts"]; + + Результат = OPI_Slack.ПолучитьСсылкуНаСообщение(Токен, Канал, Отметка); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["channel"]).Равно(Канал); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["permalink"]).Заполнено(); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСсылкуНаСообщение"); + + Проверка_СлакОк(Результат); + + + Отметки.Добавить(Отметка); МассивБлоков = Новый Массив; Блок = OPI_Slack.СформироватьБлокКартинку(Картинка, "Yo"); МассивБлоков.Добавить(Блок); - Результат = OPI_Slack.ОтправитьСообщение(Токен, Канал, Текст, МассивБлоков); + Результат = OPI_Slack.ОтправитьСообщение(Токен, Канал, Текст, , МассивБлоков); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьСообщение"); @@ -2898,7 +2909,38 @@ OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ts"]).Заполнено(); КонецЦикла; + + Час = 3600; + Отправка = OPI_Инструменты.ПолучитьТекущуюДату() + Час; + Результат = OPI_Slack.ОтправитьСообщение(Токен, Канал, Текст, Отправка); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьСообщение"); + + Проверка_СлакОк(Результат); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["channel"]).Равно(Канал); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["scheduled_message_id"]).Заполнено(); + + Отметка = Результат["scheduled_message_id"]; + Результат = OPI_Slack.УдалитьСообщение(Токен, Канал, Отметка, Истина); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьСообщение"); + Проверка_СлакОк(Результат); + +КонецПроцедуры + +Процедура Слак_ПолучитьОтложенныеСообщения() Экспорт + + Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token"); + Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel"); + + Результат = OPI_Slack.ПолучитьСписокОтложенныхСообщений(Токен, Канал); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокОтложенныхСообщений"); + + Проверка_СлакОк(Результат); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["scheduled_messages"]).ИмеетТип("Массив"); + КонецПроцедуры #КонецОбласти diff --git a/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os b/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os index 1bbd22a71c..77879cef79 100644 --- a/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os +++ b/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os @@ -38,6 +38,148 @@ #Область СлужебныйПрограммныйИнтерфейс +Функция ПолучитьСоответствиеРазделовТестирования() Экспорт + + Разделы = Новый Соответствие; + Разделы.Вставить("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"; + ЯДиск = "YandexDisk"; + Календарь = "GoogleCalendar"; + Твиттер = "Twitter"; + Вайбер = "Viber"; + Драйв = "GoogleDrive"; + ВСпейс = "GoogleWorkspace"; + Ноушн = "Notion"; + Слак = "Slack"; + + ТаблицаТестов = Новый ТаблицаЗначений; + ТаблицаТестов.Колонки.Добавить("Метод"); + ТаблицаТестов.Колонки.Добавить("Синоним"); + ТаблицаТестов.Колонки.Добавить("Раздел"); + + НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_УдалитьWebhook" , "Удалить Webhook" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКартинку" , "Отправить картинку" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьВидео" , "Отправить видео" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьАудио" , "Отправить аудио" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьДокумент" , "Отправить документ" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьГифку" , "Отправить гифку" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьМедиагруппу" , "Отправить медиагруппу" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьМестоположение" , "Отправить местоположение" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКонтакт" , "Отправить контакт" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьОпрос" , "Отправить опрос" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ПереслатьСообщение" , "Переслать сообщение" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_БанРазбан" , "Бан/Разбан" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_СоздатьСсылкуПриглашение" , "Создать ссылку-приглашение" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ЗакрепитьОткрепитьСообщение" , "Закрепить/Открепить сообщение" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьЧислоУчастников" , "Получить число участников" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьСписокАватаровФорума", "Получить список аватаров форума", Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ОткрытьЗакрытьГлавнуюТему" , "Открыть/Закрыть главную тему" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм); + НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм); + + НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СоздатьОпрос" , "Создать опрос" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СохранитьУдалитьКартинку" , "Добавить/Удалить картинку" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СоздатьИсторию" , "Создать историю" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_МетодыОбсуждений" , "Действия с обсуждениями" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ЛайкРепостКоммент" , "Лайк/Репост/Комментарий" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьСтатистику" , "Получить статистику" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьСтатистикуПостов" , "Получить статистику постов" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СоздатьРекламнуюКампанию" , "Создать рекламную кампанию" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ОтправитьСообщение" , "Отправить сообщение" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьКатегорииТоваров" , "Получить категории товаров" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СоздатьТоварПодборку" , "Создать товар и подборку" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_СоздатьТоварСоСвойствами" , "Создать товар со свойствами" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокТоваров" , "Получить список товаров" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокПодборок" , "Получить список подборок" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте); + НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте); + + НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьКопиюОбъекта" , "Создать копию объекта" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСсылкуНаСкачивание" , "Получить ссылку на скачивание" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокФайлов" , "Получить список файлов" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск); + НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск); + + НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс); + НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс); + НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс); + + НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь); + НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь); + НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь); + НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь); + + НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв); + НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв); + НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв); + НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв); + + НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер); + НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер); + НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер); + НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСКартинкой" , "Твит с картинкой" , Твиттер); + НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер); + НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер); + НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер); + + НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКартинку" , "Отправить картинку" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьФайл" , "Отправить файл" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер); + НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер); + + НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОБазе" , "Получить информацию о базе" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницуВБазу" , "Создать страницу в базу" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_ИзменитьСвойстваСтраницы" , "Изменить свойства страницы" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн); + НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн); + + НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак); + НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак); + НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьСообщение" , "Отправить/Удалить сообщение" , Слак); + НовыйТест(ТаблицаТестов, "Слак_ПолучитьОтложенныеСообщения" , "Получить отложенные сообщения" , Слак); + + Возврат ТаблицаТестов; + +КонецФункции + Функция ОжидаетЧто(Значение) Экспорт Попытка @@ -200,147 +342,6 @@ КонецФункции -Функция ПолучитьСоответствиеРазделовТестирования() Экспорт - - Разделы = Новый Соответствие; - Разделы.Вставить("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"; - ЯДиск = "YandexDisk"; - Календарь = "GoogleCalendar"; - Твиттер = "Twitter"; - Вайбер = "Viber"; - Драйв = "GoogleDrive"; - ВСпейс = "GoogleWorkspace"; - Ноушн = "Notion"; - Слак = "Slack"; - - ТаблицаТестов = Новый ТаблицаЗначений; - ТаблицаТестов.Колонки.Добавить("Метод"); - ТаблицаТестов.Колонки.Добавить("Синоним"); - ТаблицаТестов.Колонки.Добавить("Раздел"); - - НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_УдалитьWebhook" , "Удалить Webhook" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКартинку" , "Отправить картинку" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьВидео" , "Отправить видео" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьАудио" , "Отправить аудио" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьДокумент" , "Отправить документ" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьГифку" , "Отправить гифку" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьМедиагруппу" , "Отправить медиагруппу" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьМестоположение" , "Отправить местоположение" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКонтакт" , "Отправить контакт" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьОпрос" , "Отправить опрос" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ПереслатьСообщение" , "Переслать сообщение" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_БанРазбан" , "Бан/Разбан" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_СоздатьСсылкуПриглашение" , "Создать ссылку-приглашение" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ЗакрепитьОткрепитьСообщение" , "Закрепить/Открепить сообщение" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьЧислоУчастников" , "Получить число участников" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьСписокАватаровФорума", "Получить список аватаров форума", Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ОткрытьЗакрытьГлавнуюТему" , "Открыть/Закрыть главную тему" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм); - НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм); - - НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СоздатьОпрос" , "Создать опрос" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СохранитьУдалитьКартинку" , "Добавить/Удалить картинку" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СоздатьИсторию" , "Создать историю" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_МетодыОбсуждений" , "Действия с обсуждениями" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ЛайкРепостКоммент" , "Лайк/Репост/Комментарий" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьСтатистику" , "Получить статистику" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьСтатистикуПостов" , "Получить статистику постов" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СоздатьРекламнуюКампанию" , "Создать рекламную кампанию" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ОтправитьСообщение" , "Отправить сообщение" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьКатегорииТоваров" , "Получить категории товаров" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СоздатьТоварПодборку" , "Создать товар и подборку" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_СоздатьТоварСоСвойствами" , "Создать товар со свойствами" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокТоваров" , "Получить список товаров" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокПодборок" , "Получить список подборок" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте); - НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте); - - НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьКопиюОбъекта" , "Создать копию объекта" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСсылкуНаСкачивание" , "Получить ссылку на скачивание" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокФайлов" , "Получить список файлов" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск); - НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск); - - НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс); - НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс); - НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс); - - НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь); - НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь); - НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь); - НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь); - - НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв); - НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв); - НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв); - НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв); - - НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер); - НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер); - НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер); - НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСКартинкой" , "Твит с картинкой" , Твиттер); - НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер); - НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер); - НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер); - - НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКартинку" , "Отправить картинку" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьФайл" , "Отправить файл" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер); - НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер); - - НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОБазе" , "Получить информацию о базе" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницуВБазу" , "Создать страницу в базу" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_ИзменитьСвойстваСтраницы" , "Изменить свойства страницы" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн); - НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн); - - НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак); - НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак); - НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьСообщение" , "Отправить/Удалить сообщение" , Слак); - - Возврат ТаблицаТестов; - -КонецФункции - Функция ПолучитьОбщийМодуль(Знач Имя) Модуль = Вычислить(Имя); diff --git a/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os b/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os index d40c89f950..90cc95fad0 100644 --- a/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os +++ b/OInt/tools/Modules/internal/Modules/OPI_Инструменты.os @@ -388,6 +388,36 @@ КонецПроцедуры +Процедура ДобавитьПоле(Знач Имя, Знач Значение, Знач Тип, Коллекция) Экспорт + + Заполнено = ЗначениеЗаполнено(Значение); + + Если Не Заполнено Тогда + Возврат; + КонецЕсли; + + Если Тип = "Дата" Тогда + OPI_ПреобразованиеТипов.ПолучитьДату(Значение); + Значение = OPI_Инструменты.UNIXTime(Значение); + + ИначеЕсли Тип = "Коллекция" Тогда + OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Значение); + + ИначеЕсли Тип = "Булево" Тогда + OPI_ПреобразованиеТипов.ПолучитьБулево(Значение); + + ИначеЕсли Тип = "СтрокаФайла" Тогда + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение, Истина); + + Иначе + OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение); + + КонецЕсли; + + Коллекция.Вставить(Имя, Значение); + +КонецПроцедуры + #КонецОбласти #КонецОбласти