mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-12 04:34:10 +02:00
Доработки по API Twitter и по мелочи остальных
This commit is contained in:
parent
34ae49f785
commit
8e835dfedf
@ -24,7 +24,7 @@
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область Бот
|
||||
#Область ДанныеИНастройка
|
||||
|
||||
// Получить информацию бота.
|
||||
//
|
||||
@ -54,6 +54,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Установить Webhook.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// URL - Строка - Адрес обработки запросов от Telegram (с https://)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("url", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Обработать данные, полученные на Webhook.
|
||||
//
|
||||
// Параметры:
|
||||
@ -141,7 +159,7 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Диалоги
|
||||
#Область ОтправкаДанных
|
||||
|
||||
// Отправить текстовое сообщение.
|
||||
//
|
||||
@ -269,7 +287,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
//@skip-check doc-comment-collection-item-type
|
||||
Функция ОтправитьНаборЛюбыхФайлов(Знач Токен
|
||||
Функция ОтправитьМедиагруппу(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Текст
|
||||
, Знач СоответствиеФайлов
|
||||
@ -693,23 +711,36 @@
|
||||
// Параметры:
|
||||
// МассивКнопок - Массив из Строка - Массив кнопок
|
||||
// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели
|
||||
// ОднаПодОдной - Булево - Истина - кнопки выводятся в столбик, Ложь - в строку
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - JSON клавиатуры
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок, Знач ПодСообщением = Ложь) Экспорт
|
||||
|
||||
Строки = Новый Массив;
|
||||
Кнопки = Новый Массив;
|
||||
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
|
||||
КонецЦикла;
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок, Знач ПодСообщением = Ложь, Знач ОднаПодОдной = Истина) Экспорт
|
||||
|
||||
Строки.Добавить(Кнопки);
|
||||
|
||||
Если ОднаПодОдной Тогда
|
||||
|
||||
Строки = Новый Массив;
|
||||
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
Кнопки = Новый Массив;
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
Строки.Добавить(Кнопки);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
Строки = Новый Массив;
|
||||
Кнопки = Новый Массив;
|
||||
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
КонецЦикла;
|
||||
|
||||
Строки.Добавить(Кнопки);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПодСообщением Тогда
|
||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||
Иначе
|
||||
@ -753,7 +784,7 @@
|
||||
|
||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||
ТекущийФайл = Новый Файл(Файл);
|
||||
Расширение = ?(Вид = "document", ТекущийФайл.Расширение, "");
|
||||
Расширение = ?(Вид = "document" или Вид = "animation", ТекущийФайл.Расширение, "");
|
||||
Файл = Новый ДвоичныеДанные(Файл);
|
||||
Иначе
|
||||
Расширение = "";
|
||||
|
@ -131,35 +131,167 @@
|
||||
|
||||
#Область Твиты
|
||||
|
||||
// Создать твит.
|
||||
//
|
||||
// Параметры:
|
||||
// Текст - Строка - Текст твита
|
||||
// Параметры - Соответствие Из Строка - См.ПолучитьСтандартныеПараметры
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// HTTPОтвет, Произвольный, ДвоичныеДанные - Результат чтения JSON ответа сервера
|
||||
Функция СоздатьТвит(Знач Текст, Знач Параметры) Экспорт
|
||||
Функция СоздатьПроизвольныйТвит(Знач Текст, Знач МассивМедиа = "", Знач МассивВариантов = "", Знач Параметры = "") Экспорт
|
||||
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
||||
URL = "https://api.twitter.com/2/tweets";
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
URL = "https://api.twitter.com/2/tweets";
|
||||
|
||||
Если Не ТипЗнч(МассивМедиа) = Тип("Массив") Тогда
|
||||
МассивМедиа_ = Новый Массив;
|
||||
МассивМедиа_.Добавить(МассивМедиа);
|
||||
МассивМедиа = МассивМедиа_;
|
||||
КонецЕсли;
|
||||
|
||||
Поля = Новый Соответствие;
|
||||
Поля.Вставить("text", Текст);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
||||
|
||||
Если МассивМедиа.Количество() > 0 Тогда
|
||||
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
||||
КонецЕсли;
|
||||
|
||||
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТекстовыйТвит(Знач Текст, Знач Параметры = "") Экспорт
|
||||
Возврат СоздатьПроизвольныйТвит(Текст, , Параметры);
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТвитКартинки(Знач Текст, Знач МассивКартинок, Знач Параметры = "") Экспорт
|
||||
|
||||
МассивМедиа = ЗагрузитьМассивВложений(МассивКартинок, "tweet_image", Параметры);
|
||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, Параметры);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТвитГифки(Знач Текст, Знач МассивГифок, Знач Параметры = "") Экспорт
|
||||
|
||||
МассивМедиа = ЗагрузитьМассивВложений(МассивГифок, "tweet_gif", Параметры);
|
||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, Параметры);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТвитВидео(Знач Текст, Знач МассивВидео, Знач Параметры = "") Экспорт
|
||||
|
||||
МассивМедиа = ЗагрузитьМассивВложений(МассивВидео, "tweet_video", Параметры);
|
||||
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, Параметры);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗагрузитьМассивВложений(Знач МассивФайлов, Знач ТипВложений, Знач Параметры = "") Экспорт
|
||||
|
||||
МассивМедиа = Новый Массив;
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
|
||||
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
||||
|
||||
Если Не ТипЗнч(МассивФайлов) = Тип("Массив") Тогда
|
||||
МассивФайлов_ = Новый Массив;
|
||||
МассивФайлов_.Добавить(МассивФайлов);
|
||||
МассивФайлов = МассивФайлов_;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
||||
|
||||
Если Не ТипЗнч(ФайлОтправки) = Тип("ДвоичныеДанные") Тогда
|
||||
ФайлОтправки = Новый ДвоичныеДанные(ФайлОтправки);
|
||||
КонецЕсли;
|
||||
|
||||
IDМедиа = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_)["media_id_string"];
|
||||
МассивМедиа.Добавить(IDМедиа);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат МассивМедиа;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
||||
|
||||
СоответствиеMIME = Новый Соответствие;
|
||||
СоответствиеMIME.Вставить("tweet_image", "image/jpeg");
|
||||
СоответствиеMIME.Вставить("tweet_video", "video/mp4");
|
||||
СоответствиеMIME.Вставить("tweet_gif" , "image/gif");
|
||||
|
||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||
Файл = Новый ДвоичныеДанные(Файл);
|
||||
КонецЕсли;
|
||||
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
||||
Размер = Файл.Размер();
|
||||
|
||||
Если Тип = "tweet_image" Тогда
|
||||
|
||||
Поля = Новый Структура;
|
||||
Поля.Вставить("media_data" , Base64Строка(Файл));
|
||||
Поля.Вставить("media_category", Тип);
|
||||
|
||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||
|
||||
Иначе
|
||||
|
||||
ЧтениеДанных = Новый ЧтениеДанных(Файл);
|
||||
МассивЧтения = ЧтениеДанных.РазделитьНаЧастиПо(5000000);
|
||||
|
||||
Поля = Новый Структура;
|
||||
Поля.Вставить("command" , "INIT");
|
||||
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
||||
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
||||
Поля.Вставить("media_category" ,Тип);
|
||||
|
||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||
|
||||
ID = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь)["media_id_string"];
|
||||
Счетчик = 0;
|
||||
|
||||
Для Каждого Часть Из МассивЧтения Цикл
|
||||
|
||||
ДвоичныеЧасти = Часть.ПолучитьДвоичныеДанные();
|
||||
B64Части = Base64Строка(ДвоичныеЧасти);
|
||||
|
||||
Поля = Новый Структура;
|
||||
Поля.Вставить("command" , "APPEND");
|
||||
Поля.Вставить("media_id" , ID);
|
||||
Поля.Вставить("media_data" , B64Части);
|
||||
Поля.Вставить("segment_index" , OPI_Инструменты.ЧислоВСтроку(Счетчик));
|
||||
|
||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||
|
||||
OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
Поля = Новый Структура;
|
||||
Поля.Вставить("command" , "FINALIZE");
|
||||
Поля.Вставить("media_id" , ID);
|
||||
|
||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
||||
|
||||
//Здесь собрано определение данных, необходимых для работы.
|
||||
@ -242,8 +374,7 @@
|
||||
ТаблицаПараметров = Новый ТаблицаЗначений;
|
||||
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
||||
ТаблицаПараметров.Колонки.Добавить("Значение");
|
||||
|
||||
|
||||
|
||||
Для Каждого Поле Из Поля Цикл
|
||||
|
||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||
|
@ -459,12 +459,13 @@
|
||||
Функция ПоставитьЛайк(Знач IDПоста, Знач IDСтены = "", Знач Параметры = "") Экспорт
|
||||
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["group_id"]);
|
||||
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["owner_id"]);
|
||||
|
||||
Параметры_.Вставить("type" , "post");
|
||||
Параметры_.Вставить("object" , "wall" + OPI_Инструменты.ЧислоВСтроку(IDСтены) + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
||||
Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
||||
Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены));
|
||||
Параметры_.Вставить("from_group" , 0);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/likes.add", Параметры_);
|
||||
|
||||
@ -573,6 +574,26 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сократить ссылку.
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL для сокращения
|
||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Сокращенный URL
|
||||
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
Параметры_.Вставить("url", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
||||
|
||||
Возврат Ответ["response"]["short_url"];
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Статистика
|
||||
@ -678,7 +699,7 @@
|
||||
СтруктураКампании.Вставить("day_limit" , 0);
|
||||
СтруктураКампании.Вставить("all_limit" , 0);
|
||||
СтруктураКампании.Вставить("start_time" , Формат(ТекущаяДатаСеанса() - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
||||
СтруктураКампании.Вставить("stop_time" , Формат('2120.01.01' - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
||||
СтруктураКампании.Вставить("stop_time" , Формат(ДобавитьМесяц(ТекущаяДатаСеанса(), 24) - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
||||
СтруктураКампании.Вставить("status" , 1);
|
||||
|
||||
МассивСтруктур.Добавить(СтруктураКампании);
|
||||
@ -782,65 +803,19 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Изменить запись рекламного объявления.
|
||||
//
|
||||
// Параметры:
|
||||
// IDПоста - Строка,Число - ID поста на замену
|
||||
// IDКабинета - Строка,Число - ID рекламного кабинета
|
||||
// IDОбъявления - Строка,Число - ID рекламного объявления
|
||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера ВК
|
||||
Функция ИзменитьЗаписьРекламногоОбъявления(Знач IDПоста, Знач IDКабинета, Знач IDОбъявления, Знач Параметры = "") Экспорт
|
||||
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
Линк = "https://vk.com/wall-" + Параметры_["group_id"] + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста);
|
||||
|
||||
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
||||
|
||||
МассивСтруктур = Новый Массив;
|
||||
СтруктураКампании = Новый Структура;
|
||||
СтруктураКампании.Вставить("ad_id" , OPI_Инструменты.ЧислоВСтроку(IDОбъявления));
|
||||
СтруктураКампании.Вставить("status" , 1);
|
||||
СтруктураКампании.Вставить("link_url" , Линк);
|
||||
|
||||
МассивСтруктур.Добавить(СтруктураКампании);
|
||||
|
||||
JSONДата = OPI_Инструменты.JSONСтрокой(МассивСтруктур);
|
||||
|
||||
Параметры_.Вставить("data", JSONДата);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.updateAds", Параметры_);
|
||||
Функция ПолучитьСписокРекламныхКатегорий(Знач Параметры = "") Экспорт
|
||||
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.getCategories", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Прочие
|
||||
|
||||
// Сократить ссылку.
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL для сокращения
|
||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Сокращенный URL
|
||||
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||
Параметры_.Вставить("url", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
||||
|
||||
Возврат Ответ["response"]["short_url"];
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сформировать клавиатуру.
|
||||
//
|
||||
// Параметры:
|
||||
|
@ -21,7 +21,6 @@
|
||||
//SOFTWARE.
|
||||
|
||||
//https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область НастройкиИИнформация
|
||||
@ -232,8 +231,8 @@
|
||||
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
||||
|
||||
СтруктураЛокации = Новый Структура;
|
||||
СтруктураЛокации.Вставить("lat", Широта);
|
||||
СтруктураЛокации.Вставить("lon", Долгота);
|
||||
СтруктураЛокации.Вставить("lat", OPI_Инструменты.ЧислоВСтроку(Широта));
|
||||
СтруктураЛокации.Вставить("lon", OPI_Инструменты.ЧислоВСтроку(Долгота));
|
||||
|
||||
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, СтруктураЛокации);
|
||||
|
||||
|
@ -141,9 +141,9 @@
|
||||
Если Ответ.Заголовки.Получить("Content-Encoding") = "gzip" Тогда
|
||||
Ответ = РаспаковатьОтвет(Ответ);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), Ответ);
|
||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные()));
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -189,9 +189,21 @@
|
||||
|
||||
Если НужнаРаспаковка Тогда
|
||||
Ответ = РаспаковатьОтвет(Ответ);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = ?(ТипЗнч(Ответ) = Тип("HTTPОтвет"), Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ);
|
||||
|
||||
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
||||
|
||||
Попытка
|
||||
Ответ = JsonВСтруктуру(Ответ)
|
||||
Исключение
|
||||
Ответ = ПолучитьСтрокуИзДвоичныхДанных(Ответ);
|
||||
КонецПопытки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), Ответ);
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -287,7 +299,7 @@
|
||||
|
||||
Функция JSONСтрокой(Знач Данные) Экспорт
|
||||
|
||||
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь);
|
||||
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь);
|
||||
ЗаписьJSON = Новый ЗаписьJSON;
|
||||
ЗаписьJSON.ПроверятьСтруктуру = Истина;
|
||||
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
||||
@ -301,6 +313,22 @@
|
||||
Возврат СтрЗаменить(Строка(Число), Символы.НПП, "");
|
||||
КонецФункции
|
||||
|
||||
Процедура ВыполнитьСкрипт(Знач Текст) Экспорт
|
||||
|
||||
ИмяСкрипта = ПолучитьИмяВременногоФайла(".ps1");
|
||||
ТекстСкрипта = Новый ТекстовыйДокумент();
|
||||
|
||||
ТекстСкрипта.УстановитьТекст(Текст);
|
||||
|
||||
ТекстСкрипта.Записать(ИмяСкрипта, КодировкаТекста.UTF8);
|
||||
|
||||
КодВозврата = 0;
|
||||
ЗапуститьПриложение("powershell -file " + ИмяСкрипта + " -noexit", , Истина, КодВозврата);
|
||||
|
||||
УдалитьФайлы(ИмяСкрипта);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1,5 +1,39 @@
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция СоздатьКлючИзP12(Знач ПутьКСертификату, Знач Пароль = "") Экспорт
|
||||
|
||||
ФайлКлюча = ПолучитьИмяВременногоФайла("pem");
|
||||
СтрокаЗапуска = "openssl pkcs12 -in """
|
||||
+ ПутьКСертификату
|
||||
+ """ -nocerts -out """
|
||||
+ ФайлКлюча
|
||||
+ """ -nodes";
|
||||
|
||||
Если ЗначениеЗаполнено(Пароль) Тогда
|
||||
СтрокаЗапуска = СтрокаЗапуска + " -passin pass:" + Пароль;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.ВыполнитьСкрипт(СтрокаЗапуска);
|
||||
Возврат ФайлКлюча;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьRSAКлючИзПриватногоКлюча(Знач ПутьКПриватномуКлючу) Экспорт
|
||||
|
||||
ФайлRSA = ПолучитьИмяВременногоФайла("txt");
|
||||
OPI_Инструменты.ВыполнитьСкрипт("openssl rsa -in """
|
||||
+ ПутьКПриватномуКлючу
|
||||
+ """ -out """
|
||||
+ ФайлRSA
|
||||
+ """ -text");
|
||||
|
||||
УдалитьФайлы(ПутьКПриватномуКлючу);
|
||||
|
||||
Возврат ФайлRSA;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
#Область БСП
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1,8 +1,11 @@
|
||||
|
||||
Функция Twitterget(Запрос)
|
||||
|
||||
Параметры = Новый Соответствие;
|
||||
|
||||
|
||||
Код = Запрос.ПараметрыЗапроса["code"];
|
||||
ОтветТокен = OPI_Twitter.ПолучитьТокен(Код);
|
||||
ОтветТокен = OPI_Twitter.ПолучитьТокен(Код, Параметры);
|
||||
|
||||
Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
||||
Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
||||
|
Loading…
Reference in New Issue
Block a user