mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-25 02:42:28 +02:00
Преобразование OPI -> OInt (workflow)
This commit is contained in:
parent
786299e609
commit
c0320f8d7c
@ -672,7 +672,7 @@
|
||||
// ТолькоПросмотр - Булево - Запрещает редактирование файла для стороннего пользователя - readonly
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
||||
// Неопределено - пустой ответ
|
||||
Функция ДобавитьПользователейКПапке(Знач Токен, Знач IDПапки, Знач АдресаПочты, Знач ТолькоПросмотр = Истина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(АдресаПочты);
|
||||
@ -707,6 +707,29 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить статус асинхронного изменения
|
||||
// Получает статус асинхронной работы по изменению доступов
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// IDРаботы - Строка - ID асинхронной работы - job
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Dropbox
|
||||
Функция ПолучитьСтатусАсинхронногоИзменения(Знач Токен, Знач IDРаботы) Экспорт
|
||||
|
||||
URL = "https://api.dropboxapi.com/2/sharing/check_job_status";
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("async_job_id", IDРаботы, "Строка", Параметры);
|
||||
|
||||
Заголовки = ПолучитьЗаголовкиЗапроса(Токен);
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -37,7 +37,7 @@
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область ДанныеИНастройка
|
||||
#Область ПолучениеДанныхИНастройка
|
||||
|
||||
// Получить информацию о боте
|
||||
// Выполняет запрос /getMe, возвращающий базовую информацию о боте: имя, id, возможность добавлять бота в группы и т.д.
|
||||
@ -125,6 +125,107 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Скачать файл
|
||||
// Скачивает файл с серверов Telegram
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// IDФайла - Строка - ID файла для скачивания - fileid
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
|
||||
Функция СкачатьФайл(Знач Токен, Знач IDФайла) Экспорт
|
||||
|
||||
Result = "result";
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDФайла);
|
||||
|
||||
Параметры = Новый Структура("file_id", IDФайла);
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/getFile";
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Путь = Ответ[Result]["file_path"];
|
||||
|
||||
Если Не ЗначениеЗаполнено(Путь) Тогда
|
||||
Возврат Ответ;
|
||||
КонецЕсли;
|
||||
|
||||
URL = "api.telegram.org/file/bot" + Токен + "/" + Путь;
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ОбработатьДанные Telegram Mini App
|
||||
// Обрабатывает данные TMA и опредеяет их достоверность
|
||||
//
|
||||
// Параметры:
|
||||
// СтрокаДанных - Строка - querry из Telegram.WebApp.initData
|
||||
// Токен - Строка - Токен бота
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие из Строка - Соответствие данных с результатом проверки в поле passed
|
||||
Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаДанных);
|
||||
|
||||
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
|
||||
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
|
||||
Ключ = "WebAppData";
|
||||
Хэш = "";
|
||||
КлючДвоичные = ПолучитьДвоичныеДанныеИзСтроки(Ключ);
|
||||
|
||||
Результат = OPI_Криптография.HMACSHA256(КлючДвоичные, ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||
|
||||
ТЗнач = Новый ТаблицаЗначений;
|
||||
ТЗнач.Колонки.Добавить("Ключ");
|
||||
ТЗнач.Колонки.Добавить("Значение");
|
||||
|
||||
Для Каждого Данные Из СтруктураДанных Цикл
|
||||
|
||||
НоваяСтрока = ТЗнач.Добавить();
|
||||
НоваяСтрока.Ключ = Данные.Ключ;
|
||||
НоваяСтрока.Значение = Данные.Значение;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТЗнач.Сортировать("Ключ");
|
||||
|
||||
СоответствиеВозврата = Новый Соответствие;
|
||||
DCS = "";
|
||||
|
||||
Для Каждого СтрокаТЗ Из ТЗнач Цикл
|
||||
|
||||
Если СтрокаТЗ.Ключ <> "hash" Тогда
|
||||
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
|
||||
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
|
||||
Иначе
|
||||
Хэш = СтрокаТЗ.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
DCS = Лев(DCS, СтрДлина(DCS) - 1);
|
||||
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
|
||||
|
||||
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
|
||||
|
||||
Если Финал = вРег(Хэш) Тогда
|
||||
Ответ = Истина;
|
||||
Иначе
|
||||
Ответ = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствиеВозврата.Вставить("passed", Ответ);
|
||||
|
||||
Возврат СоответствиеВозврата;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОтправкаДанных
|
||||
@ -474,6 +575,42 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сформировать клавиатуру по массиву кнопок
|
||||
// Формирует простую JSON клавиатуру из массив кнопок для сообщения или нижней панели
|
||||
//
|
||||
// Параметры:
|
||||
// МассивКнопок - Массив из Строка - Массив кнопок - buttons
|
||||
// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели - under
|
||||
// ОднаПодОдной - Булево - Истина > кнопки выводятся в столбик, Ложь > в строку - column
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - JSON клавиатуры
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок
|
||||
, Знач ПодСообщением = Ложь
|
||||
, Знач ОднаПодОдной = Истина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ПодСообщением);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ОднаПодОдной);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок);
|
||||
|
||||
Если ОднаПодОдной Тогда
|
||||
Строки = СоздатьВысокуюКлавиатуру(МассивКнопок);
|
||||
Иначе
|
||||
Строки = СоздатьДлиннуюКлавиатуру(МассивКнопок);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПодСообщением Тогда
|
||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||
Иначе
|
||||
СтруктураПараметра = Новый Структура("keyboard,resize_keyboard", Строки, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Клавиатура = OPI_Инструменты.JSONСтрокой(СтруктураПараметра);
|
||||
|
||||
Возврат Клавиатура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Администрирование
|
||||
@ -655,77 +792,7 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область TelegramMiniApp
|
||||
|
||||
// Обработать данные TMA и определить их достоверность !NOCLI
|
||||
//
|
||||
// Параметры:
|
||||
// СтрокаДанных - Строка - querry из Telegram.WebApp.initData
|
||||
// Токен - Строка - Токен бота
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие из Строка - Обработанные данные с признаком достоверности
|
||||
Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаДанных);
|
||||
|
||||
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
|
||||
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
|
||||
Ключ = "WebAppData";
|
||||
Хэш = "";
|
||||
КлючДвоичные = ПолучитьДвоичныеДанныеИзСтроки(Ключ);
|
||||
|
||||
Результат = OPI_Криптография.HMACSHA256(КлючДвоичные, ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||
|
||||
ТЗнач = Новый ТаблицаЗначений;
|
||||
ТЗнач.Колонки.Добавить("Ключ");
|
||||
ТЗнач.Колонки.Добавить("Значение");
|
||||
|
||||
Для Каждого Данные Из СтруктураДанных Цикл
|
||||
|
||||
НоваяСтрока = ТЗнач.Добавить();
|
||||
НоваяСтрока.Ключ = Данные.Ключ;
|
||||
НоваяСтрока.Значение = Данные.Значение;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТЗнач.Сортировать("Ключ");
|
||||
|
||||
СоответствиеВозврата = Новый Соответствие;
|
||||
DCS = "";
|
||||
|
||||
Для Каждого СтрокаТЗ Из ТЗнач Цикл
|
||||
|
||||
Если СтрокаТЗ.Ключ <> "hash" Тогда
|
||||
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
|
||||
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
|
||||
Иначе
|
||||
Хэш = СтрокаТЗ.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
DCS = Лев(DCS, СтрДлина(DCS) - 1);
|
||||
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
|
||||
|
||||
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
|
||||
|
||||
Если Финал = вРег(Хэш) Тогда
|
||||
Ответ = Истина;
|
||||
Иначе
|
||||
Ответ = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствиеВозврата.Вставить("passed", Ответ);
|
||||
|
||||
Возврат СоответствиеВозврата;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РежимФорума
|
||||
#Область РаботаСТемамиФорума
|
||||
|
||||
// Получить список иконок-аватаров
|
||||
// Получает соответствие ID Emoji для установки в качестве иконок тем форума
|
||||
@ -923,80 +990,6 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Прочее
|
||||
|
||||
// Сформировать клавиатуру по массиву кнопок
|
||||
// Формирует простую JSON клавиатуру из массив кнопок для сообщения или нижней панели
|
||||
//
|
||||
// Параметры:
|
||||
// МассивКнопок - Массив из Строка - Массив кнопок - buttons
|
||||
// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели - under
|
||||
// ОднаПодОдной - Булево - Истина > кнопки выводятся в столбик, Ложь > в строку - column
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - JSON клавиатуры
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок
|
||||
, Знач ПодСообщением = Ложь
|
||||
, Знач ОднаПодОдной = Истина) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ПодСообщением);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ОднаПодОдной);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКнопок);
|
||||
|
||||
Если ОднаПодОдной Тогда
|
||||
Строки = СоздатьВысокуюКлавиатуру(МассивКнопок);
|
||||
Иначе
|
||||
Строки = СоздатьДлиннуюКлавиатуру(МассивКнопок);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПодСообщением Тогда
|
||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||
Иначе
|
||||
СтруктураПараметра = Новый Структура("keyboard,resize_keyboard", Строки, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Клавиатура = OPI_Инструменты.JSONСтрокой(СтруктураПараметра);
|
||||
|
||||
Возврат Клавиатура;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Скачать файл
|
||||
// Скачивает файл с серверов Telegram
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// IDФайла - Строка - ID файла для скачивания - fileid
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
|
||||
Функция СкачатьФайл(Знач Токен, Знач IDФайла) Экспорт
|
||||
|
||||
Result = "result";
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDФайла);
|
||||
|
||||
Параметры = Новый Структура("file_id", IDФайла);
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/getFile";
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Путь = Ответ[Result]["file_path"];
|
||||
|
||||
Если Не ЗначениеЗаполнено(Путь) Тогда
|
||||
Возврат Ответ;
|
||||
КонецЕсли;
|
||||
|
||||
URL = "api.telegram.org/file/bot" + Токен + "/" + Путь;
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -5210,12 +5210,20 @@
|
||||
Токен = ПараметрыФункции["Dropbox_Token"];
|
||||
Папка = ПараметрыФункции["Dropbox_SharedFolder"];
|
||||
|
||||
Результат = OPI_Dropbox.ОтменитьПубликациюПапки(Токен, Папка);
|
||||
Результат = OPI_Dropbox.ОтменитьПубликациюПапки(Токен, Папка);
|
||||
ТекущийСтатус = "in_progress";
|
||||
IDРаботы = Результат["async_job_id"];
|
||||
|
||||
Пока ТекущийСтатус = "in_progress" Цикл
|
||||
Результат = OPI_Dropbox.ПолучитьСтатусАсинхронногоИзменения(Токен, IDРаботы);
|
||||
ТекущийСтатус = Результат[".tag"];
|
||||
OPI_Инструменты.Пауза(3);
|
||||
КонецЦикла;
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтменитьПубликациюПапки", "Dropbox");
|
||||
|
||||
|
||||
Проверка_ДропБоксСтатус(Результат);
|
||||
|
||||
OPI_Инструменты.Пауза(5);
|
||||
|
Loading…
Reference in New Issue
Block a user