1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-15 20:13:31 +02:00

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

This commit is contained in:
Vitaly the Alpaca
2024-03-22 13:30:40 +00:00
committed by Vitaly the Alpaca (bot)
parent 031986830a
commit 461dc64c24
11 changed files with 532 additions and 507 deletions

View File

@@ -467,7 +467,7 @@
Если ЗначениеЗаполнено(Файл) Тогда Если ЗначениеЗаполнено(Файл) Тогда
Файл = OPI_Инструменты.ПолучитьДвоичныеДанные(Файл); Файл = OPI_Инструменты.ПолучитьДвоичныеДанные(Файл);
СоответствиеФайла.Вставить(Файл, MIME); СоответствиеФайла.Вставить(Файл, MIME);
КонецЕсли; КонецЕсли;

View File

@@ -304,9 +304,8 @@
Параметры.Вставить("after", ВставитьПосле); Параметры.Вставить("after", ВставитьПосле);
КонецЕсли; КонецЕсли;
Ответ = OPI_Инструменты.Patch("https://api.notion.com/v1/blocks/" + Родитель + "/children" URL = "https://api.notion.com/v1/blocks/" + Родитель + "/children";
, Параметры Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
, Заголовки);
Возврат Ответ; Возврат Ответ;
@@ -451,6 +450,7 @@
ПреобразоватьИД(Родитель); ПреобразоватьИД(Родитель);
ПолеИдентификатора = ?(РодительБаза, "database_id", "page_id"); ПолеИдентификатора = ?(РодительБаза, "database_id", "page_id");
СтруктураРодителя = Новый Структура(); СтруктураРодителя = Новый Структура();
СтруктураРодителя.Вставить("type" , ПолеИдентификатора); СтруктураРодителя.Вставить("type" , ПолеИдентификатора);
СтруктураРодителя.Вставить(ПолеИдентификатора, Родитель); СтруктураРодителя.Вставить(ПолеИдентификатора, Родитель);
@@ -606,6 +606,7 @@
Если Не Блок.Получить(Поле) = Неопределено Тогда Если Не Блок.Получить(Поле) = Неопределено Тогда
Блок.Удалить(Поле); Блок.Удалить(Поле);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры

View File

@@ -43,9 +43,9 @@
Функция ПолучитьИнформациюБота(Знач Токен) Экспорт Функция ПолучитьИнформациюБота(Знач Токен) Экспорт
URL = "api.telegram.org/bot" + Токен + "/getMe"; URL = "api.telegram.org/bot" + Токен + "/getMe";
Ответ = OPI_Инструменты.Get(URL); Ответ = OPI_Инструменты.Get(URL);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -59,8 +59,8 @@
Функция ПолучитьОбновления(Знач Токен) Экспорт Функция ПолучитьОбновления(Знач Токен) Экспорт
URL = "api.telegram.org/bot" + Токен + "/getUpdates"; URL = "api.telegram.org/bot" + Токен + "/getUpdates";
Ответ = OPI_Инструменты.Get(URL); Ответ = OPI_Инструменты.Get(URL);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -74,13 +74,13 @@
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("url", URL); Параметры_.Вставить("url", URL);
URL = "api.telegram.org/bot" + Токен + "/setWebHook"; URL = "api.telegram.org/bot" + Токен + "/setWebHook";
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -94,8 +94,8 @@
Функция УдалитьWebhook(Знач Токен) Экспорт Функция УдалитьWebhook(Знач Токен) Экспорт
URL = "api.telegram.org/bot" + Токен + "/deleteWebHook"; URL = "api.telegram.org/bot" + Токен + "/deleteWebHook";
Ответ = OPI_Инструменты.Get(URL); Ответ = OPI_Инструменты.Get(URL);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -115,19 +115,19 @@
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
Функция ОтправитьТекстовоеСообщение(Знач Токен, Знач IDЧата, Знач Текст, Знач Клавиатура = "") Экспорт Функция ОтправитьТекстовоеСообщение(Знач Токен, Знач IDЧата, Знач Текст, Знач Клавиатура = "") Экспорт
OPI_Инструменты.ЗаменитьСпецСимволы(Текст); OPI_Инструменты.ЗаменитьСпецСимволы(Текст);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("text" , Текст); Параметры_.Вставить("text" , Текст);
Параметры_.Вставить("reply_markup", Клавиатура); Параметры_.Вставить("reply_markup", Клавиатура);
ДобавитьИдентификаторЧата(IDЧата, Параметры_); ДобавитьИдентификаторЧата(IDЧата, Параметры_);
URL = "api.telegram.org/bot" + Токен + "/sendMessage"; URL = "api.telegram.org/bot" + Токен + "/sendMessage";
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -144,7 +144,7 @@
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
Функция ОтправитьКартинку(Знач Токен, Знач IDЧата, Знач Текст, Знач Картинка, Знач Клавиатура = "") Экспорт Функция ОтправитьКартинку(Знач Токен, Знач IDЧата, Знач Текст, Знач Картинка, Знач Клавиатура = "") Экспорт
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Картинка, "photo", Клавиатура); Возврат ОтправитьФайл(Токен, IDЧата, Текст, Картинка, "photo", Клавиатура);
КонецФункции КонецФункции
@@ -161,7 +161,7 @@
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
Функция ОтправитьВидео(Знач Токен, Знач IDЧата, Знач Текст, Знач Видео, Знач Клавиатура = "") Экспорт Функция ОтправитьВидео(Знач Токен, Знач IDЧата, Знач Текст, Знач Видео, Знач Клавиатура = "") Экспорт
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Видео, "video", Клавиатура); Возврат ОтправитьФайл(Токен, IDЧата, Текст, Видео, "video", Клавиатура);
КонецФункции КонецФункции
@@ -178,7 +178,7 @@
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
Функция ОтправитьАудио(Знач Токен, Знач IDЧата, Знач Текст, Знач Аудио, Знач Клавиатура = "") Экспорт Функция ОтправитьАудио(Знач Токен, Знач IDЧата, Знач Текст, Знач Аудио, Знач Клавиатура = "") Экспорт
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Аудио, "audio", Клавиатура); Возврат ОтправитьФайл(Токен, IDЧата, Текст, Аудио, "audio", Клавиатура);
КонецФункции КонецФункции
@@ -195,7 +195,7 @@
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
Функция ОтправитьДокумент(Знач Токен, Знач IDЧата, Знач Текст, Знач Документ, Знач Клавиатура = "") Экспорт Функция ОтправитьДокумент(Знач Токен, Знач IDЧата, Знач Текст, Знач Документ, Знач Клавиатура = "") Экспорт
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Документ, "document", Клавиатура); Возврат ОтправитьФайл(Токен, IDЧата, Текст, Документ, "document", Клавиатура);
КонецФункции КонецФункции
@@ -212,7 +212,7 @@
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
Функция ОтправитьГифку(Знач Токен, Знач IDЧата, Знач Текст, Знач Гифка, Знач Клавиатура = "") Экспорт Функция ОтправитьГифку(Знач Токен, Знач IDЧата, Знач Текст, Знач Гифка, Знач Клавиатура = "") Экспорт
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Гифка, "animation", Клавиатура); Возврат ОтправитьФайл(Токен, IDЧата, Текст, Гифка, "animation", Клавиатура);
КонецФункции КонецФункции
@@ -236,26 +236,26 @@
// Типы: audio, document, photo, video // Типы: audio, document, photo, video
// Нельзя замешивать разные типы! // Нельзя замешивать разные типы!
OPI_Инструменты.ЗаменитьСпецсимволы(Текст); OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
URL = "api.telegram.org/bot" + Токен + "/sendMediaGroup"; URL = "api.telegram.org/bot" + Токен + "/sendMediaGroup";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
СтруктураФайлов = Новый Структура; СтруктураФайлов = Новый Структура;
Медиа = Новый Массив; Медиа = Новый Массив;
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("caption" , Текст); Параметры_.Вставить("caption" , Текст);
Параметры_.Вставить("reply_markup", Клавиатура); Параметры_.Вставить("reply_markup", Клавиатура);
ДобавитьИдентификаторЧата(IDЧата, Параметры_); ДобавитьИдентификаторЧата(IDЧата, Параметры_);
СформироватьМассивМедиа(СоответствиеФайлов, Текст, СтруктураФайлов, Медиа); СформироватьМассивМедиа(СоответствиеФайлов, Текст, СтруктураФайлов, Медиа);
Параметры_.Вставить("media", Медиа); Параметры_.Вставить("media", Медиа);
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed"); Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed");
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -272,20 +272,20 @@
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
Функция ОтправитьМестоположение(Знач Токен, Знач IDЧата, Знач Широта, Знач Долгота, Знач Клавиатура = "") Экспорт Функция ОтправитьМестоположение(Знач Токен, Знач IDЧата, Знач Широта, Знач Долгота, Знач Клавиатура = "") Экспорт
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
URL = "api.telegram.org/bot" + Токен + "/sendLocation"; URL = "api.telegram.org/bot" + Токен + "/sendLocation";
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("latitude" , OPI_Инструменты.ЧислоВСтроку(Широта)); Параметры_.Вставить("latitude" , OPI_Инструменты.ЧислоВСтроку(Широта));
Параметры_.Вставить("longitude" , OPI_Инструменты.ЧислоВСтроку(Долгота)); Параметры_.Вставить("longitude" , OPI_Инструменты.ЧислоВСтроку(Долгота));
Параметры_.Вставить("reply_markup", Клавиатура); Параметры_.Вставить("reply_markup", Клавиатура);
ДобавитьИдентификаторЧата(IDЧата, Параметры_); ДобавитьИдентификаторЧата(IDЧата, Параметры_);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -303,21 +303,21 @@
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
Функция ОтправитьКонтакт(Знач Токен, Знач IDЧата, Знач Имя, Знач Фамилия, Знач Телефон, Знач Клавиатура = "") Экспорт Функция ОтправитьКонтакт(Знач Токен, Знач IDЧата, Знач Имя, Знач Фамилия, Знач Телефон, Знач Клавиатура = "") Экспорт
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
URL = "api.telegram.org/bot" + Токен + "/sendContact"; URL = "api.telegram.org/bot" + Токен + "/sendContact";
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("first_name" , Имя); Параметры_.Вставить("first_name" , Имя);
Параметры_.Вставить("last_name" , Фамилия); Параметры_.Вставить("last_name" , Фамилия);
Параметры_.Вставить("phone_number", Строка(Телефон)); Параметры_.Вставить("phone_number", Строка(Телефон));
Параметры_.Вставить("reply_markup", Клавиатура); Параметры_.Вставить("reply_markup", Клавиатура);
ДобавитьИдентификаторЧата(IDЧата, Параметры_); ДобавитьИдентификаторЧата(IDЧата, Параметры_);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -334,24 +334,24 @@
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
Функция ОтправитьОпрос(Знач Токен, Знач IDЧата, Знач Вопрос, Знач МассивОтветов, Знач Анонимный = Истина) Экспорт Функция ОтправитьОпрос(Знач Токен, Знач IDЧата, Знач Вопрос, Знач МассивОтветов, Знач Анонимный = Истина) Экспорт
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов); Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов);
URL = "api.telegram.org/bot" + Токен + "/sendPoll"; URL = "api.telegram.org/bot" + Токен + "/sendPoll";
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode", "Markdown"); Параметры_.Вставить("parse_mode", "Markdown");
Параметры_.Вставить("question" , Вопрос); Параметры_.Вставить("question" , Вопрос);
Параметры_.Вставить("options" , Ответы); Параметры_.Вставить("options" , Ответы);
Если Не Анонимный Тогда Если Не Анонимный Тогда
Параметры_.Вставить("is_anonymous", Ложь); Параметры_.Вставить("is_anonymous", Ложь);
КонецЕсли; КонецЕсли;
ДобавитьИдентификаторЧата(IDЧата, Параметры_); ДобавитьИдентификаторЧата(IDЧата, Параметры_);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -368,19 +368,19 @@
Функция ПереслатьСообщение(Знач Токен, Знач IDОригинала, Знач ОткудаID, Знач КудаID) Экспорт Функция ПереслатьСообщение(Знач Токен, Знач IDОригинала, Знач ОткудаID, Знач КудаID) Экспорт
URL = "api.telegram.org/bot" + Токен + "/forwardMessage"; URL = "api.telegram.org/bot" + Токен + "/forwardMessage";
IDОригинала = OPI_Инструменты.ЧислоВСтроку(IDОригинала); IDОригинала = OPI_Инструменты.ЧислоВСтроку(IDОригинала);
ОткудаID = OPI_Инструменты.ЧислоВСтроку(ОткудаID); ОткудаID = OPI_Инструменты.ЧислоВСтроку(ОткудаID);
КудаID = OPI_Инструменты.ЧислоВСтроку(КудаID); КудаID = OPI_Инструменты.ЧислоВСтроку(КудаID);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("from_chat_id", ОткудаID); Параметры_.Вставить("from_chat_id", ОткудаID);
Параметры_.Вставить("message_id" , IDОригинала); Параметры_.Вставить("message_id" , IDОригинала);
ДобавитьИдентификаторЧата(КудаID, Параметры_); ДобавитьИдентификаторЧата(КудаID, Параметры_);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -400,17 +400,17 @@
Функция Бан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт Функция Бан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
URL = "api.telegram.org/bot" + Токен + "/banChatMember"; URL = "api.telegram.org/bot" + Токен + "/banChatMember";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя); IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode", "Markdown"); Параметры_.Вставить("parse_mode", "Markdown");
Параметры_.Вставить("chat_id" , IDЧата); Параметры_.Вставить("chat_id" , IDЧата);
Параметры_.Вставить("user_id" , IDПользователя); Параметры_.Вставить("user_id" , IDПользователя);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -426,18 +426,18 @@
Функция Разбан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт Функция Разбан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
URL = "api.telegram.org/bot" + Токен + "/unbanChatMember"; URL = "api.telegram.org/bot" + Токен + "/unbanChatMember";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя); IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("chat_id" , IDЧата); Параметры_.Вставить("chat_id" , IDЧата);
Параметры_.Вставить("user_id" , IDПользователя); Параметры_.Вставить("user_id" , IDПользователя);
Параметры_.Вставить("only_if_banned", Ложь); Параметры_.Вставить("only_if_banned", Ложь);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -459,23 +459,23 @@
, Знач ЛимитПользователей = 0) Экспорт , Знач ЛимитПользователей = 0) Экспорт
URL = "api.telegram.org/bot" + Токен + "/createChatInviteLink"; URL = "api.telegram.org/bot" + Токен + "/createChatInviteLink";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode", "Markdown"); Параметры_.Вставить("parse_mode", "Markdown");
Параметры_.Вставить("chat_id" , IDЧата); Параметры_.Вставить("chat_id" , IDЧата);
Параметры_.Вставить("name" , Заголовок); Параметры_.Вставить("name" , Заголовок);
Если ЗначениеЗаполнено(ДатаИстечения) Тогда Если ЗначениеЗаполнено(ДатаИстечения) Тогда
ДатаИстечения = OPI_Инструменты.UNIXTime(ДатаИстечения); ДатаИстечения = OPI_Инструменты.UNIXTime(ДатаИстечения);
Параметры_.Вставить("expire_date", ДатаИстечения); Параметры_.Вставить("expire_date", ДатаИстечения);
КонецЕсли; КонецЕсли;
Параметры_.Вставить("member_limit", ЛимитПользователей); Параметры_.Вставить("member_limit", ЛимитПользователей);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -491,18 +491,18 @@
Функция ЗакрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт Функция ЗакрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
URL = "api.telegram.org/bot" + Токен + "/pinChatMessage"; URL = "api.telegram.org/bot" + Токен + "/pinChatMessage";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения); IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("chat_id" , IDЧата); Параметры_.Вставить("chat_id" , IDЧата);
Параметры_.Вставить("message_id" , IDСообщения); Параметры_.Вставить("message_id" , IDСообщения);
Параметры_.Вставить("disable_notification", Истина); Параметры_.Вставить("disable_notification", Истина);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -518,17 +518,17 @@
Функция ОткрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт Функция ОткрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
URL = "api.telegram.org/bot" + Токен + "/unpinChatMessage"; URL = "api.telegram.org/bot" + Токен + "/unpinChatMessage";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения); IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode", "Markdown"); Параметры_.Вставить("parse_mode", "Markdown");
Параметры_.Вставить("chat_id" , IDЧата); Параметры_.Вставить("chat_id" , IDЧата);
Параметры_.Вставить("message_id", IDСообщения); Параметры_.Вставить("message_id", IDСообщения);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -543,15 +543,15 @@
Функция ПолучитьЧислоУчастников(Знач Токен, Знач IDЧата) Экспорт Функция ПолучитьЧислоУчастников(Знач Токен, Знач IDЧата) Экспорт
URL = "api.telegram.org/bot" + Токен + "/getChatMemberCount"; URL = "api.telegram.org/bot" + Токен + "/getChatMemberCount";
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode", "Markdown"); Параметры_.Вставить("parse_mode", "Markdown");
Параметры_.Вставить("chat_id" , IDЧата); Параметры_.Вставить("chat_id" , IDЧата);
Ответ = OPI_Инструменты.Get(URL, Параметры_); Ответ = OPI_Инструменты.Get(URL, Параметры_);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -569,55 +569,55 @@
// Соответствие из Строка - Обработанные данные с признаком достоверности // Соответствие из Строка - Обработанные данные с признаком достоверности
Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL); СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных); СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
Ключ = "WebAppData"; Ключ = "WebAppData";
Хэш = ""; Хэш = "";
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ), ПолучитьДвоичныеДанныеИзСтроки(Токен)); Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ), ПолучитьДвоичныеДанныеИзСтроки(Токен));
ТЗнач = Новый ТаблицаЗначений; ТЗнач = Новый ТаблицаЗначений;
ТЗнач.Колонки.Добавить("Ключ"); ТЗнач.Колонки.Добавить("Ключ");
ТЗнач.Колонки.Добавить("Значение"); ТЗнач.Колонки.Добавить("Значение");
Для Каждого Данные Из СтруктураДанных Цикл Для Каждого Данные Из СтруктураДанных Цикл
НоваяСтрока = ТЗнач.Добавить(); НоваяСтрока = ТЗнач.Добавить();
НоваяСтрока.Ключ = Данные.Ключ; НоваяСтрока.Ключ = Данные.Ключ;
НоваяСтрока.Значение = Данные.Значение; НоваяСтрока.Значение = Данные.Значение;
КонецЦикла; КонецЦикла;
ТЗнач.Сортировать("Ключ"); ТЗнач.Сортировать("Ключ");
СоответствиеВозврата = Новый Соответствие; СоответствиеВозврата = Новый Соответствие;
DCS = ""; DCS = "";
Для Каждого СтрокаТЗ Из ТЗнач Цикл Для Каждого СтрокаТЗ Из ТЗнач Цикл
Если СтрокаТЗ.Ключ <> "hash" Тогда Если СтрокаТЗ.Ключ <> "hash" Тогда
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС; DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение); СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
Иначе Иначе
Хэш = СтрокаТЗ.Значение; Хэш = СтрокаТЗ.Значение;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
DCS = Лев(DCS, СтрДлина(DCS) - 1); DCS = Лев(DCS, СтрДлина(DCS) - 1);
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS)); Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись); Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
Если Финал = вРег(Хэш) Тогда Если Финал = вРег(Хэш) Тогда
Ответ = Истина; Ответ = Истина;
Иначе Иначе
Ответ = Ложь; Ответ = Ложь;
КонецЕсли; КонецЕсли;
СоответствиеВозврата.Вставить("passed", Ответ); СоответствиеВозврата.Вставить("passed", Ответ);
Возврат СоответствиеВозврата; Возврат СоответствиеВозврата;
КонецФункции КонецФункции
@@ -815,25 +815,25 @@
, Знач ПодСообщением = Ложь , Знач ПодСообщением = Ложь
, Знач ОднаПодОдной = Истина) Экспорт , Знач ОднаПодОдной = Истина) Экспорт
Если ОднаПодОдной Тогда Если ОднаПодОдной Тогда
Строки = СоздатьВысокуюКлавиатуру(МассивКнопок); Строки = СоздатьВысокуюКлавиатуру(МассивКнопок);
Иначе Иначе
Строки = СоздатьДлиннуюКлваиатуру(МассивКнопок); Строки = СоздатьДлиннуюКлваиатуру(МассивКнопок);
КонецЕсли; КонецЕсли;
Если ПодСообщением Тогда Если ПодСообщением Тогда
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1); СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
Иначе Иначе
СтруктураПараметра = Новый Структура("keyboard,resize_keyboard", Строки, Истина); СтруктураПараметра = Новый Структура("keyboard,resize_keyboard", Строки, Истина);
КонецЕсли; КонецЕсли;
ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON = Новый ЗаписьJSON;
ПЗJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , , ЭкранированиеСимволовJSON.СимволыВнеASCII); ПЗJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , , ЭкранированиеСимволовJSON.СимволыВнеASCII);
ЗаписьJSON.УстановитьСтроку(ПЗJSON); ЗаписьJSON.УстановитьСтроку(ПЗJSON);
ЗаписатьJSON(ЗаписьJSON, СтруктураПараметра); ЗаписатьJSON(ЗаписьJSON, СтруктураПараметра);
Возврат ЗаписьJSON.Закрыть(); Возврат ЗаписьJSON.Закрыть();
КонецФункции КонецФункции
@@ -846,34 +846,34 @@
Функция ОтправитьФайл(Знач Токен, Знач IDЧата, Знач Текст, Знач Файл, Знач Вид, Знач Клавиатура) Функция ОтправитьФайл(Знач Токен, Знач IDЧата, Знач Текст, Знач Файл, Знач Вид, Знач Клавиатура)
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата); IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
Расширение = ""; Расширение = "";
Метод = ""; Метод = "";
ОпределитьМетодОтправки(Вид, Метод, Расширение); ОпределитьМетодОтправки(Вид, Метод, Расширение);
OPI_Инструменты.ЗаменитьСпецсимволы(Текст); OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
ТекущийФайл = Новый Файл(Файл); ТекущийФайл = Новый Файл(Файл);
Расширение = ?(Вид = "document" Или Вид = "animation", ТекущийФайл.Расширение, ""); Расширение = ?(Вид = "document" Или Вид = "animation", ТекущийФайл.Расширение, "");
Файл = OPI_Инструменты.ПолучитьДвоичныеДанные(Файл); Файл = OPI_Инструменты.ПолучитьДвоичныеДанные(Файл);
КонецЕсли; КонецЕсли;
Расширение = СтрЗаменить(Расширение, ".", "___"); Расширение = СтрЗаменить(Расширение, ".", "___");
Параметры_ = Новый Структура; Параметры_ = Новый Структура;
Параметры_.Вставить("parse_mode" , "Markdown"); Параметры_.Вставить("parse_mode" , "Markdown");
Параметры_.Вставить("caption" , Текст); Параметры_.Вставить("caption" , Текст);
Параметры_.Вставить("reply_markup", Клавиатура); Параметры_.Вставить("reply_markup", Клавиатура);
ДобавитьИдентификаторЧата(IDЧата, Параметры_); ДобавитьИдентификаторЧата(IDЧата, Параметры_);
СтруктураФайлов = Новый Структура; СтруктураФайлов = Новый Структура;
СтруктураФайлов.Вставить(Вид + Расширение, Файл); СтруктураФайлов.Вставить(Вид + Расширение, Файл);
URL = "api.telegram.org/bot" + Токен + Метод; URL = "api.telegram.org/bot" + Токен + Метод;
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed"); Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed");
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -1003,7 +1003,7 @@
Процедура СформироватьМассивМедиа(Знач СоответствиеФайлов, Знач Текст, СтруктураФайлов, Медиа) Процедура СформироватьМассивМедиа(Знач СоответствиеФайлов, Знач Текст, СтруктураФайлов, Медиа)
Счетчик = 0; Счетчик = 0;
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
@@ -1069,7 +1069,7 @@
Метод = "/sendDocument"; Метод = "/sendDocument";
ИначеЕсли Вид = "animation" Тогда ИначеЕсли Вид = "animation" Тогда
Метод = "/sendAnimation"; Метод = "/sendAnimation";
Расширение = ".gif"; Расширение = ".gif";
Иначе Иначе
ВызватьИсключение "Некорректный вид отправки"; ВызватьИсключение "Некорректный вид отправки";
КонецЕсли; КонецЕсли;

View File

@@ -337,7 +337,7 @@
СоответствиеMIME.Вставить("tweet_video", "video/mp4"); СоответствиеMIME.Вставить("tweet_video", "video/mp4");
СоответствиеMIME.Вставить("tweet_gif" , "image/gif"); СоответствиеMIME.Вставить("tweet_gif" , "image/gif");
Файл = OPI_Инструменты.ПолучитьДвоичныеДанные(Файл); Файл = OPI_Инструменты.ПолучитьДвоичныеДанные(Файл);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
URL = "https://upload.twitter.com/1.1/media/upload.json"; URL = "https://upload.twitter.com/1.1/media/upload.json";
Размер = Файл.Размер(); Размер = Файл.Размер();

View File

@@ -160,10 +160,10 @@
Если Не Картинка = "" Тогда Если Не Картинка = "" Тогда
Если ТипЗнч(Картинка) = Тип("Строка") Тогда Если ТипЗнч(Картинка) = Тип("Строка") Тогда
Путь = Картинка; Путь = Картинка;
Картинка = OPI_Инструменты.ПолучитьДвоичныеДанные(Картинка); Картинка = OPI_Инструменты.ПолучитьДвоичныеДанные(Картинка);
Иначе Иначе
Путь = ("image.jpeg"); Путь = ("image.jpeg");
КонецЕсли; КонецЕсли;
Файлы = Новый Соответствие; Файлы = Новый Соответствие;
@@ -171,16 +171,16 @@
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы); Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы);
Параметры_.Вставить(Hash , Ответ[Hash]); Параметры_.Вставить(Hash , Ответ[Hash]);
Параметры_.Вставить(Photo , Ответ[Photo]); Параметры_.Вставить(Photo, Ответ[Photo]);
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.savePhoto", Параметры_); Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.savePhoto", Параметры_);
IDФото = Ответ.Получить(Response)["id"]; IDФото = Ответ.Получить(Response)["id"];
КонецЕсли; КонецЕсли;
Параметры_.Вставить("is_anonymous" , 1); Параметры_.Вставить("is_anonymous", 1);
Параметры_.Вставить("is_multiple" , 0); Параметры_.Вставить("is_multiple" , 0);
Ответы = "["; Ответы = "[";
Первый = Истина; Первый = Истина;
@@ -199,12 +199,12 @@
Ответы = Ответы + "]"; Ответы = Ответы + "]";
Параметры_.Вставить("add_answers" , Ответы); Параметры_.Вставить("add_answers", Ответы);
Параметры_.Вставить("photo_id" , OPI_Инструменты.ЧислоВСтроку(IDФото)); Параметры_.Вставить("photo_id" , OPI_Инструменты.ЧислоВСтроку(IDФото));
Параметры_.Вставить("question" , Вопрос); Параметры_.Вставить("question" , Вопрос);
Опрос = OPI_Инструменты.Get("api.vk.com/method/polls.create", Параметры_); Опрос = OPI_Инструменты.Get("api.vk.com/method/polls.create", Параметры_);
ОпросСоответствие = Опрос.Получить(Response); ОпросСоответствие = Опрос.Получить(Response);
ОпросID = "poll" ОпросID = "poll"
+ OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("owner_id")) + OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("owner_id"))
@@ -230,13 +230,13 @@
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера ВК // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера ВК
Функция СоздатьАльбом(Знач Наименование, Знач Описание = "", Знач Параметры = "") Экспорт Функция СоздатьАльбом(Знач Наименование, Знач Описание = "", Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("title" , Наименование); Параметры_.Вставить("title" , Наименование);
Параметры_.Вставить("description" , Описание); Параметры_.Вставить("description" , Описание);
Параметры_.Вставить("upload_by_admins_only", 1); Параметры_.Вставить("upload_by_admins_only", 1);
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.createAlbum", Параметры_); Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.createAlbum", Параметры_);
Возврат Ответ; Возврат Ответ;
@@ -273,9 +273,9 @@
Функция СоздатьИсторию(Знач Картинка, Знач URL = "", Знач Параметры = "") Экспорт Функция СоздатьИсторию(Знач Картинка, Знач URL = "", Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("link_text" , "more"); Параметры_.Вставить("link_text" , "more");
Параметры_.Вставить("link_url" , URL); Параметры_.Вставить("link_url" , URL);
Параметры_.Вставить("add_to_news" , "1"); Параметры_.Вставить("add_to_news", "1");
Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "История"); Ответ = ЗагрузитьФотоНаСервер(Картинка, Параметры_, "История");
Возврат Ответ; Возврат Ответ;
@@ -296,8 +296,8 @@
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("album_id" , OPI_Инструменты.ЧислоВСтроку(IDАльбома)); Параметры_.Вставить("album_id", OPI_Инструменты.ЧислоВСтроку(IDАльбома));
Параметры_.Вставить("caption" , Описание); Параметры_.Вставить("caption" , Описание);
Возврат ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Альбом"); Возврат ЗагрузитьФотоНаСервер(Картинка, Параметры_, "Альбом");
@@ -338,8 +338,8 @@
Функция СоздатьОбсуждение(Знач Наименование, Знач ТекстПервогоСообщения, Знач Параметры = "") Экспорт Функция СоздатьОбсуждение(Знач Наименование, Знач ТекстПервогоСообщения, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("title" , Наименование); Параметры_.Вставить("title", Наименование);
Параметры_.Вставить("text" , ТекстПервогоСообщения); Параметры_.Вставить("text" , ТекстПервогоСообщения);
Ответ = OPI_Инструменты.Get("api.vk.com/method/board.addTopic", Параметры_); Ответ = OPI_Инструменты.Get("api.vk.com/method/board.addTopic", Параметры_);
@@ -399,8 +399,8 @@
Функция НаписатьВОбсуждение(Знач IDОбсуждения, Знач Текст, Знач Параметры = "") Экспорт Функция НаписатьВОбсуждение(Знач IDОбсуждения, Знач Текст, Знач Параметры = "") Экспорт
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Параметры_.Вставить("topic_id" , OPI_Инструменты.ЧислоВСтроку(IDОбсуждения)); Параметры_.Вставить("topic_id", OPI_Инструменты.ЧислоВСтроку(IDОбсуждения));
Параметры_.Вставить("message" , Текст); Параметры_.Вставить("message" , Текст);
Ответ = OPI_Инструменты.Get("api.vk.com/method/board.createComment", Параметры_); Ответ = OPI_Инструменты.Get("api.vk.com/method/board.createComment", Параметры_);
@@ -577,14 +577,14 @@
Параметры_ = ПолучитьСтандартныеПараметры(Параметры); Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
ДатаНачала = Формат(ДатаНачала - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0"); ДатаНачала = Формат(ДатаНачала - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
ДатаОкончания = Формат(ДатаОкончания - дата(1970, 1, 1, 1, 0, 0), "ЧГ=0"); ДатаОкончания = Формат(ДатаОкончания - дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
Параметры_.Вставить("timestamp_from" , ДатаНачала); Параметры_.Вставить("timestamp_from", ДатаНачала);
Параметры_.Вставить("timestamp_to" , ДатаОкончания); Параметры_.Вставить("timestamp_to" , ДатаОкончания);
Параметры_.Вставить("stats_groups" , "visitors, reach, activity"); Параметры_.Вставить("stats_groups" , "visitors, reach, activity");
Ответ = OPI_Инструменты.Get("api.vk.com/method/stats.get", Параметры_); Ответ = OPI_Инструменты.Get("api.vk.com/method/stats.get", Параметры_);
Возврат Ответ; Возврат Ответ;
@@ -631,8 +631,8 @@
СтрокаНомеров = СтрСоединить(МассивНабора, ","); СтрокаНомеров = СтрСоединить(МассивНабора, ",");
Параметры_.Вставить("post_ids", СтрокаНомеров); Параметры_.Вставить("post_ids", СтрокаНомеров);
Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_); Статистика = OPI_Инструменты.Get("api.vk.com/method/stats.getPostReach", Параметры_);
МассивСтатистики = Статистика[Response]; МассивСтатистики = Статистика[Response];
Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл Для Каждого ЭлементСтатистики Из МассивСтатистики Цикл
МассивОтветов.Добавить(ЭлементСтатистики); МассивОтветов.Добавить(ЭлементСтатистики);
@@ -758,8 +758,9 @@
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета)); Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
МассивСтруктур = Новый Массив; МассивСтруктур = Новый Массив;
СтруктураКампании = Новый Структура; СтруктураКампании = Новый Структура;
СтруктураКампании.Вставить("ad_id" , OPI_Инструменты.ЧислоВСтроку(IDОбъявления)); СтруктураКампании.Вставить("ad_id" , OPI_Инструменты.ЧислоВСтроку(IDОбъявления));
СтруктураКампании.Вставить("status" , 0); СтруктураКампании.Вставить("status" , 0);
@@ -1460,8 +1461,8 @@
Файлы.Вставить(КлючКартинка, ЗначениеКартинка); Файлы.Вставить(КлючКартинка, ЗначениеКартинка);
Ответ = OPI_Инструменты.Get(Загрузка, Параметры); Ответ = OPI_Инструменты.Get(Загрузка, Параметры);
URL = Ответ[Response]["upload_url"]; URL = Ответ[Response]["upload_url"];
Параметры.Вставить("upload_url", URL); Параметры.Вставить("upload_url", URL);
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы); Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы);
@@ -1635,9 +1636,9 @@
СерверФото = OPI_Инструменты.ЧислоВСтроку(Ответ[Serv]); СерверФото = OPI_Инструменты.ЧислоВСтроку(Ответ[Serv]);
Параметры.Вставить(Hash , Ответ[Hash]); Параметры.Вставить(Hash, Ответ[Hash]);
Параметры.Вставить(Фото , Ответ[Фото]); Параметры.Вставить(Фото, Ответ[Фото]);
Параметры.Вставить(Serv , СерверФото); Параметры.Вставить(Serv, СерверФото);
Идентификатор = Ответ.Получить(Aid); Идентификатор = Ответ.Получить(Aid);
Идентификатор = OPI_Инструменты.ЧислоВСтроку(Идентификатор); Идентификатор = OPI_Инструменты.ЧислоВСтроку(Идентификатор);

View File

@@ -64,9 +64,8 @@
// ДвоичныеДанные, Неопределено, Произвольный - Получить информацию о канале // ДвоичныеДанные, Неопределено, Произвольный - Получить информацию о канале
Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт
Возврат OPI_Инструменты.Get("https://chatapi.viber.com/pa/get_account_info" URL = "https://chatapi.viber.com/pa/get_account_info";
, Возврат OPI_Инструменты.Get(URL, , ТокенВЗаголовки(Токен));
, ТокенВЗаголовки(Токен));
КонецФункции КонецФункции
@@ -80,12 +79,12 @@
// Произвольный, HTTPОтвет - Ответ сервера Viber // Произвольный, HTTPОтвет - Ответ сервера Viber
Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт
URL = "https://chatapi.viber.com/pa/get_user_details";
СтруктураПараметров = Новый Структура; СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("id", IDПользователя); СтруктураПараметров.Вставить("id", IDПользователя);
Ответ = OPI_Инструменты.Post("https://chatapi.viber.com/pa/get_user_details" Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
, СтруктураПараметров
, ТокенВЗаголовки(Токен));
Попытка Попытка
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные()); Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
@@ -105,6 +104,8 @@
// Произвольный, HTTPОтвет - Ответ сервера Viber // Произвольный, HTTPОтвет - Ответ сервера Viber
Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт
URL = "https://chatapi.viber.com/pa/get_online";
Если Не ТипЗнч(IDПользователей) = Тип("Массив") Тогда Если Не ТипЗнч(IDПользователей) = Тип("Массив") Тогда
ОдиночныйID = IDПользователей; ОдиночныйID = IDПользователей;
@@ -116,9 +117,7 @@
СтруктураПараметров = Новый Структура; СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ids", IDПользователей); СтруктураПараметров.Вставить("ids", IDПользователей);
Ответ = OPI_Инструменты.Post("https://chatapi.viber.com/pa/get_online" Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
, СтруктураПараметров
, ТокенВЗаголовки(Токен));
Попытка Попытка
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные()); Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());

View File

@@ -45,10 +45,10 @@
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex // ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex
Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт Функция ПолучитьИнформациюОДиске(Знач Токен) Экспорт
Заголовки = ЗаголовокАвторизации(Токен); Заголовки = ЗаголовокАвторизации(Токен);
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки); Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk", , Заголовки);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -62,20 +62,20 @@
// Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex // Строка, Произвольный, ДвоичныеДанные, HTTPОтвет, Неопределено - Ответ сервера Yandex
Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт Функция СоздатьПапку(Знач Токен, Знач Путь) Экспорт
Заголовки = ЗаголовокАвторизации(Токен); Заголовки = ЗаголовокАвторизации(Токен);
URL = "https://cloud-api.yandex.net/v1/disk/resources"; URL = "https://cloud-api.yandex.net/v1/disk/resources";
Href = "href"; Href = "href";
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("path", Путь); Параметры.Вставить("path", Путь);
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь); Ответ = OPI_Инструменты.Put(URL + Параметры, , Заголовки, Ложь);
URLОтвета = Ответ[Href]; URLОтвета = Ответ[Href];
Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки); Ответ = OPI_Инструменты.Get(URLОтвета, , Заголовки);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -89,13 +89,13 @@
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex // ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex
Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт Функция ПолучитьОбъект(Знач Токен, Знач Путь) Экспорт
Заголовки = ЗаголовокАвторизации(Токен); Заголовки = ЗаголовокАвторизации(Токен);
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("path", Путь); Параметры.Вставить("path", Путь);
Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки); Ответ = OPI_Инструменты.Get("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -110,15 +110,15 @@
// ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex // ДвоичныеДанные, Неопределено, Строка, Произвольный - Ответ сервера Yandex
Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт Функция УдалитьОбъект(Знач Токен, Знач Путь, Знач ВКорзину = Истина) Экспорт
Заголовки = ЗаголовокАвторизации(Токен); Заголовки = ЗаголовокАвторизации(Токен);
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("path" , Путь); Параметры.Вставить("path" , Путь);
Параметры.Вставить("permanently", Не ВКорзину); Параметры.Вставить("permanently", Не ВКорзину);
Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки); Ответ = OPI_Инструменты.Delete("https://cloud-api.yandex.net/v1/disk/resources", Параметры, Заголовки);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции
@@ -297,8 +297,8 @@
URL = "https://cloud-api.yandex.net/v1/disk/resources/upload"; URL = "https://cloud-api.yandex.net/v1/disk/resources/upload";
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.URLВКодировкеURL)); Параметры.Вставить("url" , КодироватьСтроку(Адрес, СпособКодированияСтроки.URLВКодировкеURL));
Параметры.Вставить("path" , Путь); Параметры.Вставить("path", Путь);
Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры); Параметры = OPI_Инструменты.ПараметрыЗапросаВСтроку(Параметры);
Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь); Ответ = OPI_Инструменты.Post(URL + Параметры, , Заголовки, Ложь);
@@ -468,10 +468,10 @@
Функция ЗаголовокАвторизации(Знач Токен) Функция ЗаголовокАвторизации(Знач Токен)
Заголовки = Новый Соответствие; Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "OAuth " + Токен); Заголовки.Вставить("Authorization", "OAuth " + Токен);
Возврат Заголовки; Возврат Заголовки;
КонецФункции КонецФункции

View File

@@ -57,15 +57,15 @@
// Строка, Произвольный, Неопределено, ДвоичныеДанные, HTTPОтвет - Преобразовать код в токен // Строка, Произвольный, Неопределено, ДвоичныеДанные, HTTPОтвет - Преобразовать код в токен
Функция ПреобразоватьКодВТокен(Знач ClientId, Знач ClientSecret, Знач КодУстройства) Экспорт Функция ПреобразоватьКодВТокен(Знач ClientId, Знач ClientSecret, Знач КодУстройства) Экспорт
Параметры = Новый Структура; Параметры = Новый Структура;
Параметры.Вставить("grant_type" , "device_code"); Параметры.Вставить("grant_type" , "device_code");
Параметры.Вставить("code" , КодУстройства); Параметры.Вставить("code" , КодУстройства);
Параметры.Вставить("client_id" , ClientId); Параметры.Вставить("client_id" , ClientId);
Параметры.Вставить("client_secret" , ClientSecret); Параметры.Вставить("client_secret" , ClientSecret);
Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь); Ответ = OPI_Инструменты.Post("https://oauth.yandex.ru/token", Параметры, , Ложь);
Возврат Ответ; Возврат Ответ;
КонецФункции КонецФункции

View File

@@ -65,9 +65,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюБота"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюБота");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено(); Проверка_ТелеграмИнформацияБота(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["username"]).Заполнено();
OPI_Инструменты.Пауза(5); OPI_Инструменты.Пауза(5);
@@ -82,9 +80,7 @@
OPI_Telegram.УдалитьWebhook(Токен); OPI_Telegram.УдалитьWebhook(Токен);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие") .Заполнено(); Проверка_ТелеграмМассив(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).ИмеетТип("Массив");
OPI_Инструменты.Пауза(5); OPI_Инструменты.Пауза(5);
@@ -98,10 +94,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьWebhook"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьWebhook");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено(); Проверка_ТелеграмУстановкаВебхук(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно("Webhook was set");
OPI_Инструменты.Пауза(5); OPI_Инструменты.Пауза(5);
@@ -114,10 +107,7 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьWebhook"); OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьWebhook");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено(); Проверка_ТелеграмУдалениеВебхук(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно("Webhook was deleted");
OPI_Инструменты.Пауза(5); OPI_Инструменты.Пауза(5);
@@ -2635,6 +2625,40 @@
КонецПроцедуры КонецПроцедуры
Процедура Проверка_ТелеграмИнформацияБота(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]["username"]).Заполнено();
КонецПроцедуры
Процедура Проверка_ТелеграмМассив(Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие") .Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Проверка_ТелеграмУстановкаВебхук(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно("Webhook was set");
КонецПроцедуры
Процедура Проверка_ТелеграмУдалениеВебхук(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["result"]).Равно(Истина);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно("Webhook was deleted");
КонецПроцедуры
Процедура Проверка_ВКИстина(Знач Результат) Процедура Проверка_ВКИстина(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено(); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();

View File

@@ -42,7 +42,7 @@
Попытка Попытка
Модуль = ПолучитьОбщийМодуль("ЮТест"); Модуль = ПолучитьОбщийМодуль("ЮТест");
Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль"); Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль");
Возврат Модуль.ОжидаетЧто(Значение); Возврат Модуль.ОжидаетЧто(Значение);
@@ -54,8 +54,8 @@
Функция СформироватьТестыЯкс() Экспорт Функция СформироватьТестыЯкс() Экспорт
Модуль = ПолучитьОбщийМодуль("ЮТТесты"); Модуль = ПолучитьОбщийМодуль("ЮТТесты");
МассивРазделов = ПолучитьМассивРазделовТестирования(); МассивРазделов = ПолучитьМассивРазделовТестирования();
ТаблицаТестов = ПолучитьТаблицуТестов(); ТаблицаТестов = ПолучитьТаблицуТестов();
Для Каждого Раздел Из МассивРазделов Цикл Для Каждого Раздел Из МассивРазделов Цикл
@@ -324,9 +324,9 @@
Функция ПолучитьОбщийМодуль(Знач Имя) Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя); Модуль = Вычислить(Имя);
Возврат Модуль; Возврат Модуль;
КонецФункции КонецФункции
Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел) Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел)

View File

@@ -49,15 +49,15 @@
#Область ЗапросыСТелом #Область ЗапросыСТелом
Функция Post(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт Функция Post(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON); Возврат ВыполнитьЗапросСТелом(URL, "POST", Параметры, ДопЗаголовки, JSON);
КонецФункции КонецФункции
Функция Patch(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт Функция Patch(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON); Возврат ВыполнитьЗапросСТелом(URL, "PATCH", Параметры, ДопЗаголовки, JSON);
КонецФункции КонецФункции
Функция Put(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт Функция Put(Знач URL, Знач Параметры = "", Знач ДопЗаголовки = "", Знач JSON = Истина) Экспорт
Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON); Возврат ВыполнитьЗапросСТелом(URL, "PUT", Параметры, ДопЗаголовки, JSON);
КонецФункции КонецФункции
#КонецОбласти #КонецОбласти
@@ -96,21 +96,21 @@
Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт
СоответствиеВозврата = Новый Соответствие; СоответствиеВозврата = Новый Соответствие;
КоличествоЧастей = 2; КоличествоЧастей = 2;
МассивПараметров = СтрРазделить(СтрокаПараметров, "&", Ложь); МассивПараметров = СтрРазделить(СтрокаПараметров, "&", Ложь);
Для Каждого Параметр Из МассивПараметров Цикл Для Каждого Параметр Из МассивПараметров Цикл
МассивКлючЗначение = СтрРазделить(Параметр, "="); МассивКлючЗначение = СтрРазделить(Параметр, "=");
Если МассивКлючЗначение.Количество() = КоличествоЧастей Тогда Если МассивКлючЗначение.Количество() = КоличествоЧастей Тогда
СоответствиеВозврата.Вставить(МассивКлючЗначение[0], МассивКлючЗначение[1]); СоответствиеВозврата.Вставить(МассивКлючЗначение[0], МассивКлючЗначение[1]);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
Возврат СоответствиеВозврата; Возврат СоответствиеВозврата;
КонецФункции КонецФункции
@@ -119,22 +119,22 @@
КонецФункции КонецФункции
Функция UNIXTime(Знач Дата) Экспорт Функция UNIXTime(Знач Дата) Экспорт
Возврат Формат(Дата - Дата(1970, 1, 1, 1, 0, 0), "ЧЦ=10; ЧДЦ=0; ЧГ=0"); Возврат Формат(Дата - Дата(1970, 1, 1, 1, 0, 0), "ЧЦ=10; ЧДЦ=0; ЧГ=0");
КонецФункции КонецФункции
Процедура ЗаменитьСпецСимволы(Текст) Экспорт Процедура ЗаменитьСпецСимволы(Текст) Экспорт
МассивСимволов = Новый Соответствие; МассивСимволов = Новый Соответствие;
МассивСимволов.Вставить("<", "&lt;"); МассивСимволов.Вставить("<", "&lt;");
МассивСимволов.Вставить(">", "&gt;"); МассивСимволов.Вставить(">", "&gt;");
МассивСимволов.Вставить("&", "&amp;"); МассивСимволов.Вставить("&", "&amp;");
МассивСимволов.Вставить("_", " "); МассивСимволов.Вставить("_", " ");
МассивСимволов.Вставить("[", "("); МассивСимволов.Вставить("[", "(");
МассивСимволов.Вставить("]", ")"); МассивСимволов.Вставить("]", ")");
Для Каждого СимволМассива Из МассивСимволов Цикл Для Каждого СимволМассива Из МассивСимволов Цикл
Текст = СтрЗаменить(Текст, СимволМассива.Ключ, СимволМассива.Значение); Текст = СтрЗаменить(Текст, СимволМассива.Ключ, СимволМассива.Значение);
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
@@ -178,32 +178,32 @@
Функция ПараметрыЗапросаВСтроку(Знач Параметры) Экспорт Функция ПараметрыЗапросаВСтроку(Знач Параметры) Экспорт
Если Параметры.Количество() = 0 Тогда Если Параметры.Количество() = 0 Тогда
Возврат ""; Возврат "";
КонецЕсли; КонецЕсли;
СтрокаПараметров = "?"; СтрокаПараметров = "?";
Для Каждого Параметр Из Параметры Цикл Для Каждого Параметр Из Параметры Цикл
СтрокаПараметров = СтрокаПараметров СтрокаПараметров = СтрокаПараметров
+ Параметр.Ключ + Параметр.Ключ
+ "=" + "="
+ КодироватьСтроку(Параметр.Значение, + КодироватьСтроку(Параметр.Значение,
СпособКодированияСтроки.КодировкаURL) СпособКодированияСтроки.КодировкаURL)
+ "&"; + "&";
КонецЦикла; КонецЦикла;
СтрокаПараметров = Лев(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1); СтрокаПараметров = Лев(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
Возврат СтрокаПараметров; Возврат СтрокаПараметров;
КонецФункции КонецФункции
Функция РазбитьURL(Знач URL) Экспорт Функция РазбитьURL(Знач URL) Экспорт
URL = СтрЗаменить(URL, "https://", ""); URL = СтрЗаменить(URL, "https://", "");
URL = СтрЗаменить(URL, "http://", ""); URL = СтрЗаменить(URL, "http://", "");
URL = СтрЗаменить(URL, ":443", ""); URL = СтрЗаменить(URL, ":443", "");
Адрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1); Адрес = Прав(URL, СтрДлина(URL) - СтрНайти(URL, "/", НаправлениеПоиска.СНачала) + 1);
Сервер = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1); Сервер = Лев(URL, СтрНайти(URL, "/", НаправлениеПоиска.СНачала) - 1);
@@ -214,45 +214,45 @@
Сервер = "https://" + Сервер; Сервер = "https://" + Сервер;
КонецПопытки; КонецПопытки;
СтруктураВозврата = Новый Структура; СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Сервер", Сервер); СтруктураВозврата.Вставить("Сервер", Сервер);
СтруктураВозврата.Вставить("Адрес" , Адрес); СтруктураВозврата.Вставить("Адрес" , Адрес);
Возврат СтруктураВозврата; Возврат СтруктураВозврата;
КонецФункции КонецФункции
Функция JsonВСтруктуру(Знач Текст) Экспорт Функция JsonВСтруктуру(Знач Текст) Экспорт
Если Не ЗначениеЗаполнено(Текст) Тогда Если Не ЗначениеЗаполнено(Текст) Тогда
Возврат ""; Возврат "";
КонецЕсли; КонецЕсли;
ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ПолучитьСтрокуИзДвоичныхДанных(Текст)); ЧтениеJSON.УстановитьСтроку(ПолучитьСтрокуИзДвоичныхДанных(Текст));
Данные = ПрочитатьJSON(ЧтениеJSON, Истина, Неопределено, ФорматДатыJSON.ISO); Данные = ПрочитатьJSON(ЧтениеJSON, Истина, Неопределено, ФорматДатыJSON.ISO);
ЧтениеJSON.Закрыть(); ЧтениеJSON.Закрыть();
Возврат Данные; Возврат Данные;
КонецФункции КонецФункции
Функция JSONСтрокой(Знач Данные) Экспорт Функция JSONСтрокой(Знач Данные) Экспорт
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, " ", Истина, ЭкранированиеСимволовJSON.Нет, ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, " ", Истина, ЭкранированиеСимволовJSON.Нет,
Ложь, Ложь, Ложь, Ложь); Ложь, Ложь, Ложь, Ложь);
ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, Данные); ЗаписатьJSON(ЗаписьJSON, Данные);
Возврат ЗаписьJSON.Закрыть(); Возврат ЗаписьJSON.Закрыть();
КонецФункции КонецФункции
Функция ЧислоВСтроку(Знач Число) Экспорт Функция ЧислоВСтроку(Знач Число) Экспорт
Возврат СтрЗаменить(Строка(Число), Символы.НПП, ""); Возврат СтрЗаменить(Строка(Число), Символы.НПП, "");
КонецФункции КонецФункции
Функция ПрочитатьJSONФайл(Знач Путь) Экспорт Функция ПрочитатьJSONФайл(Знач Путь) Экспорт
@@ -269,35 +269,35 @@
Функция ПолучитьДвоичныеДанные(Знач Значение) Экспорт Функция ПолучитьДвоичныеДанные(Знач Значение) Экспорт
Попытка Попытка
Если ТипЗнч(Значение) <> Тип("ДвоичныеДанные") Тогда Если ТипЗнч(Значение) <> Тип("ДвоичныеДанные") Тогда
Файл = Новый Файл(Значение); Файл = Новый Файл(Значение);
Если Файл.Существует() Тогда Если Файл.Существует() Тогда
Возврат Новый ДвоичныеДанные(Значение); Возврат Новый ДвоичныеДанные(Значение);
Иначе Иначе
ИВФ = ПолучитьИмяВременногоФайла(); ИВФ = ПолучитьИмяВременногоФайла();
КопироватьФайл(Значение, ИВФ); КопироватьФайл(Значение, ИВФ);
Двоичные = Новый ДвоичныеДанные(ИВФ); Двоичные = Новый ДвоичныеДанные(ИВФ);
УдалитьФайлы(ИВФ); УдалитьФайлы(ИВФ);
Возврат Двоичные; Возврат Двоичные;
КонецЕсли; КонецЕсли;
Иначе Иначе
Возврат Значение; Возврат Значение;
КонецЕсли; КонецЕсли;
Исключение Исключение
ВызватьИсключение "Ошибка получения данных файла из параметра"; ВызватьИсключение "Ошибка получения данных файла из параметра";
КонецПопытки КонецПопытки
КонецФункции КонецФункции
@@ -718,175 +718,175 @@
Функция РаспаковатьОтвет(Ответ) Функция РаспаковатьОтвет(Ответ)
Попытка Попытка
Возврат ПрочитатьGZip(Ответ.ПолучитьТелоКакДвоичныеДанные()); Возврат ПрочитатьGZip(Ответ.ПолучитьТелоКакДвоичныеДанные());
Исключение Исключение
Возврат Ответ; Возврат Ответ;
КонецПопытки; КонецПопытки;
КонецФункции КонецФункции
Функция ПрочитатьGZip(СжатыеДанные) Экспорт Функция ПрочитатьGZip(СжатыеДанные) Экспорт
РазмерПрефиксаGZip = 10; РазмерПрефиксаGZip = 10;
РазмерПостфиксаGZip = 8; РазмерПостфиксаGZip = 8;
РазмерДД = ZipРазмерDD(); РазмерДД = ZipРазмерDD();
РазмерСДХ = ZipРазмерCDH(); РазмерСДХ = ZipРазмерCDH();
РазмерЕСД = ZipРазмерEOCD(); РазмерЕСД = ZipРазмерEOCD();
РазмерЛФХ = ZipРазмерLFH(); РазмерЛФХ = ZipРазмерLFH();
ЧтениеДанных = Новый ЧтениеДанных(СжатыеДанные); ЧтениеДанных = Новый ЧтениеДанных(СжатыеДанные);
ЧтениеДанных.Пропустить(РазмерПрефиксаGZip); ЧтениеДанных.Пропустить(РазмерПрефиксаGZip);
РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip; РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip;
ПотокZip = Новый ПотокВПамяти(РазмерЛФХ ПотокZip = Новый ПотокВПамяти(РазмерЛФХ
+ РазмерСжатыхДанных + РазмерСжатыхДанных
+ РазмерДД + РазмерДД
+ РазмерСДХ + РазмерСДХ
+ РазмерЕСД); + РазмерЕСД);
ЗаписьДанных = Новый ЗаписьДанных(ПотокZip); ЗаписьДанных = Новый ЗаписьДанных(ПотокZip);
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH()); ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH());
ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных); ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных);
ЗаписьДанных.Закрыть(); ЗаписьДанных.Закрыть();
ЗаписьДанных = Новый ЗаписьДанных(ПотокZip); ЗаписьДанных = Новый ЗаписьДанных(ПотокZip);
CRC32 = ЧтениеДанных.ПрочитатьЦелое32(); CRC32 = ЧтениеДанных.ПрочитатьЦелое32();
РазмерНесжатыхДанных = ЧтениеДанных.ПрочитатьЦелое32(); РазмерНесжатыхДанных = ЧтениеДанных.ПрочитатьЦелое32();
ЧтениеДанных.Закрыть(); ЧтениеДанных.Закрыть();
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)); ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных));
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)); ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных));
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipEOCD(РазмерСжатыхДанных)); ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipEOCD(РазмерСжатыхДанных));
ЗаписьДанных.Закрыть(); ЗаписьДанных.Закрыть();
Возврат ПрочитатьZip(ПотокZip); Возврат ПрочитатьZip(ПотокZip);
КонецФункции КонецФункции
Функция ПрочитатьZip(СжатыеДанные, ТекстОшибки = Неопределено) Функция ПрочитатьZip(СжатыеДанные, ТекстОшибки = Неопределено)
Каталог = ПолучитьИмяВременногоФайла(); Каталог = ПолучитьИмяВременногоФайла();
ЧтениеZip = Новый ЧтениеZipФайла(СжатыеДанные); ЧтениеZip = Новый ЧтениеZipФайла(СжатыеДанные);
ИмяФайла = ЧтениеZip.Элементы[0].Имя; ИмяФайла = ЧтениеZip.Элементы[0].Имя;
Попытка Попытка
ЧтениеZip.Извлечь(ЧтениеZip.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); ЧтениеZip.Извлечь(ЧтениеZip.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
Исключение Исключение
// Игнорируем проверку целостности архива, просто читаем результат // Игнорируем проверку целостности архива, просто читаем результат
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки; КонецПопытки;
ЧтениеZip.Закрыть(); ЧтениеZip.Закрыть();
Результат = Новый ДвоичныеДанные(Каталог + ПолучитьРазделительПути() + ИмяФайла); Результат = Новый ДвоичныеДанные(Каталог + ПолучитьРазделительПути() + ИмяФайла);
УдалитьФайлы(Каталог); УдалитьФайлы(Каталог);
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
Функция ZipРазмерLFH() Функция ZipРазмерLFH()
Возврат 34; Возврат 34;
КонецФункции КонецФункции
Функция ZipРазмерDD() Функция ZipРазмерDD()
Возврат 16; Возврат 16;
КонецФункции КонецФункции
Функция ZipРазмерCDH() Функция ZipРазмерCDH()
Возврат 50; Возврат 50;
КонецФункции КонецФункции
Функция ZipРазмерEOCD() Функция ZipРазмерEOCD()
Возврат 22; Возврат 22;
КонецФункции КонецФункции
Функция ZipLFH() Функция ZipLFH()
// Local file header // Local file header
Буфер = Новый БуферДвоичныхДанных(ZipРазмерLFH()); Буфер = Новый БуферДвоичныхДанных(ZipРазмерLFH());
Буфер.ЗаписатьЦелое32(0, 67324752); // signature 0x04034b50 Буфер.ЗаписатьЦелое32(0, 67324752); // signature 0x04034b50
Буфер.ЗаписатьЦелое16(4, 20); // version Буфер.ЗаписатьЦелое16(4, 20); // version
Буфер.ЗаписатьЦелое16(6, 10); // bit flags Буфер.ЗаписатьЦелое16(6, 10); // bit flags
Буфер.ЗаписатьЦелое16(8, 8); // compression method Буфер.ЗаписатьЦелое16(8, 8); // compression method
Буфер.ЗаписатьЦелое16(10, 0); // time Буфер.ЗаписатьЦелое16(10, 0); // time
Буфер.ЗаписатьЦелое16(12, 0); // date Буфер.ЗаписатьЦелое16(12, 0); // date
Буфер.ЗаписатьЦелое32(14, 0); // crc-32 Буфер.ЗаписатьЦелое32(14, 0); // crc-32
Буфер.ЗаписатьЦелое32(18, 0); // compressed size Буфер.ЗаписатьЦелое32(18, 0); // compressed size
Буфер.ЗаписатьЦелое32(22, 0); // uncompressed size Буфер.ЗаписатьЦелое32(22, 0); // uncompressed size
Буфер.ЗаписатьЦелое16(26, 4); // filename legth - "data" Буфер.ЗаписатьЦелое16(26, 4); // filename legth - "data"
Буфер.ЗаписатьЦелое16(28, 0); // extra field length Буфер.ЗаписатьЦелое16(28, 0); // extra field length
Буфер.Записать(30, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь)); Буфер.Записать(30, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь));
Возврат Буфер; Возврат Буфер;
КонецФункции КонецФункции
Функция ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных) Функция ZipDD(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)
// Data descriptor // Data descriptor
Буфер = Новый БуферДвоичныхДанных(ZipРазмерDD()); Буфер = Новый БуферДвоичныхДанных(ZipРазмерDD());
Буфер.ЗаписатьЦелое32(0, 134695760); Буфер.ЗаписатьЦелое32(0, 134695760);
Буфер.ЗаписатьЦелое32(4, CRC32); Буфер.ЗаписатьЦелое32(4, CRC32);
Буфер.ЗаписатьЦелое32(8, РазмерСжатыхДанных); Буфер.ЗаписатьЦелое32(8, РазмерСжатыхДанных);
Буфер.ЗаписатьЦелое32(12, РазмерНесжатыхДанных); Буфер.ЗаписатьЦелое32(12, РазмерНесжатыхДанных);
Возврат Буфер; Возврат Буфер;
КонецФункции КонецФункции
Функция ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных) Функция ZipCDH(CRC32, РазмерСжатыхДанных, РазмерНесжатыхДанных)
// Central directory header // Central directory header
Буфер = Новый БуферДвоичныхДанных(ZipРазмерCDH()); Буфер = Новый БуферДвоичныхДанных(ZipРазмерCDH());
Буфер.ЗаписатьЦелое32(0, 33639248); // signature 0x02014b50 Буфер.ЗаписатьЦелое32(0, 33639248); // signature 0x02014b50
Буфер.ЗаписатьЦелое16(4, 798); // version made by Буфер.ЗаписатьЦелое16(4, 798); // version made by
Буфер.ЗаписатьЦелое16(6, 20); // version needed to extract Буфер.ЗаписатьЦелое16(6, 20); // version needed to extract
Буфер.ЗаписатьЦелое16(8, 10); // bit flags Буфер.ЗаписатьЦелое16(8, 10); // bit flags
Буфер.ЗаписатьЦелое16(10, 8); // compression method Буфер.ЗаписатьЦелое16(10, 8); // compression method
Буфер.ЗаписатьЦелое16(12, 0); // time Буфер.ЗаписатьЦелое16(12, 0); // time
Буфер.ЗаписатьЦелое16(14, 0); // date Буфер.ЗаписатьЦелое16(14, 0); // date
Буфер.ЗаписатьЦелое32(16, CRC32); // crc-32 Буфер.ЗаписатьЦелое32(16, CRC32); // crc-32
Буфер.ЗаписатьЦелое32(20, РазмерСжатыхДанных); // compressed size Буфер.ЗаписатьЦелое32(20, РазмерСжатыхДанных); // compressed size
Буфер.ЗаписатьЦелое32(24, РазмерНесжатыхДанных); // uncompressed size Буфер.ЗаписатьЦелое32(24, РазмерНесжатыхДанных); // uncompressed size
Буфер.ЗаписатьЦелое16(28, 4); // file name length Буфер.ЗаписатьЦелое16(28, 4); // file name length
Буфер.ЗаписатьЦелое16(30, 0); // extra field length Буфер.ЗаписатьЦелое16(30, 0); // extra field length
Буфер.ЗаписатьЦелое16(32, 0); // file comment length Буфер.ЗаписатьЦелое16(32, 0); // file comment length
Буфер.ЗаписатьЦелое16(34, 0); // disk number start Буфер.ЗаписатьЦелое16(34, 0); // disk number start
Буфер.ЗаписатьЦелое16(36, 0); // internal file attributes Буфер.ЗаписатьЦелое16(36, 0); // internal file attributes
Буфер.ЗаписатьЦелое32(38, 2176057344); // external file attributes Буфер.ЗаписатьЦелое32(38, 2176057344); // external file attributes
Буфер.ЗаписатьЦелое32(42, 0); // relative offset of local header Буфер.ЗаписатьЦелое32(42, 0); // relative offset of local header
Буфер.Записать(46, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь)); Буфер.Записать(46, ПолучитьБуферДвоичныхДанныхИзСтроки("data", "ascii", Ложь));
Возврат Буфер; Возврат Буфер;
КонецФункции КонецФункции
Функция ZipEOCD(РазмерСжатыхДанных) Функция ZipEOCD(РазмерСжатыхДанных)
// End of central directory // End of central directory
РазмерCDH = 50; РазмерCDH = 50;
Буфер = Новый БуферДвоичныхДанных(ZipРазмерEOCD()); Буфер = Новый БуферДвоичныхДанных(ZipРазмерEOCD());
Буфер.ЗаписатьЦелое32(0, 101010256); // signature 0x06054b50 Буфер.ЗаписатьЦелое32(0, 101010256); // signature 0x06054b50
Буфер.ЗаписатьЦелое16(4, 0); // number of this disk Буфер.ЗаписатьЦелое16(4, 0); // number of this disk
Буфер.ЗаписатьЦелое16(6, 0); // number of the disk with the start of the central directory Буфер.ЗаписатьЦелое16(6, 0); // number of the disk with the start of the central directory
Буфер.ЗаписатьЦелое16(8, 1); // total number of entries in the central directory on this disk Буфер.ЗаписатьЦелое16(8, 1); // total number of entries in the central directory on this disk
Буфер.ЗаписатьЦелое16(10, 1); // total number of entries in the central directory Буфер.ЗаписатьЦелое16(10, 1); // total number of entries in the central directory
Буфер.ЗаписатьЦелое32(12, РазмерCDH); // size of the central directory Буфер.ЗаписатьЦелое32(12, РазмерCDH); // size of the central directory
// offset of start of central directory with respect to the starting disk number // offset of start of central directory with respect to the starting disk number
Буфер.ЗаписатьЦелое32(16, ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD()); Буфер.ЗаписатьЦелое32(16, ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD());
Буфер.ЗаписатьЦелое16(20, 0); // the starting disk number Буфер.ЗаписатьЦелое16(20, 0); // the starting disk number
Возврат Буфер; Возврат Буфер;
КонецФункции КонецФункции