You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-13 20:05:19 +02:00
Форматирование и деффекты SC
This commit is contained in:
@@ -92,10 +92,11 @@
|
|||||||
Функция ОбновитьТокен(Знач Параметры = "") Экспорт
|
Функция ОбновитьТокен(Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
Refresh = "refresh_token";
|
||||||
|
|
||||||
ПараметрыЗапроса = Новый Структура;
|
ПараметрыЗапроса = Новый Структура;
|
||||||
ПараметрыЗапроса.Вставить("refresh_token", Параметры_["refresh_token"]);
|
ПараметрыЗапроса.Вставить(Refresh , Параметры_[Refresh]);
|
||||||
ПараметрыЗапроса.Вставить("grant_type" , "refresh_token");
|
ПараметрыЗапроса.Вставить("grant_type" , Refresh);
|
||||||
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
ПараметрыЗапроса.Вставить("client_id" , Параметры_["client_id"]);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
Ответ = OPI_Инструменты.Post("https://api.twitter.com/2/oauth2/token"
|
||||||
@@ -143,6 +144,7 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка, Произвольный, Неопределено, ДвоичныеДанные, HTTPОтвет - Создать произвольный твит
|
// Строка, Произвольный, Неопределено, ДвоичныеДанные, HTTPОтвет - Создать произвольный твит
|
||||||
//@skip-check method-too-many-params
|
//@skip-check method-too-many-params
|
||||||
|
// BSLLS:NumberOfOptionalParams-off
|
||||||
Функция СоздатьПроизвольныйТвит(Знач Текст = ""
|
Функция СоздатьПроизвольныйТвит(Знач Текст = ""
|
||||||
, Знач МассивМедиа = ""
|
, Знач МассивМедиа = ""
|
||||||
, Знач МассивВариантовОпроса = ""
|
, Знач МассивВариантовОпроса = ""
|
||||||
@@ -151,8 +153,9 @@
|
|||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
URL = "https://api.twitter.com/2/tweets";
|
URL = "https://api.twitter.com/2/tweets";
|
||||||
|
Массив = "Массив";
|
||||||
|
|
||||||
Если Не ТипЗнч(МассивМедиа) = Тип("Массив") Тогда
|
Если Не ТипЗнч(МассивМедиа) = Тип(Массив) Тогда
|
||||||
МассивМедиа_ = Новый Массив;
|
МассивМедиа_ = Новый Массив;
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(МассивМедиа) Тогда
|
Если ЗначениеЗаполнено(МассивМедиа) Тогда
|
||||||
@@ -168,7 +171,7 @@
|
|||||||
Поля.Вставить("text", Текст);
|
Поля.Вставить("text", Текст);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(МассивВариантовОпроса) = Тип("Массив") И ЗначениеЗаполнено(ДлительностьОпроса) Тогда
|
Если ТипЗнч(МассивВариантовОпроса) = Тип(Массив) И ЗначениеЗаполнено(ДлительностьОпроса) Тогда
|
||||||
|
|
||||||
ДлительностьОпроса = Число(ДлительностьОпроса);
|
ДлительностьОпроса = Число(ДлительностьОпроса);
|
||||||
|
|
||||||
@@ -178,7 +181,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ТипЗнч(МассивМедиа) = Тип("Массив") Тогда
|
Если ТипЗнч(МассивМедиа) = Тип(Массив) Тогда
|
||||||
Если МассивМедиа.Количество() > 0 Тогда
|
Если МассивМедиа.Количество() > 0 Тогда
|
||||||
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -190,6 +193,7 @@
|
|||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
// BSLLS:NumberOfOptionalParams-on
|
||||||
|
|
||||||
// Создать текстовый твит.
|
// Создать текстовый твит.
|
||||||
//
|
//
|
||||||
@@ -287,7 +291,6 @@
|
|||||||
МассивФайлов = МассивФайлов_;
|
МассивФайлов = МассивФайлов_;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
||||||
|
|
||||||
Если Не ТипЗнч(ФайлОтправки) = Тип("ДвоичныеДанные") Тогда
|
Если Не ТипЗнч(ФайлОтправки) = Тип("ДвоичныеДанные") Тогда
|
||||||
@@ -313,6 +316,11 @@
|
|||||||
|
|
||||||
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
||||||
|
|
||||||
|
Command = "command";
|
||||||
|
ВидЗапроса = "POST";
|
||||||
|
Единица = 1024;
|
||||||
|
Количество = 4;
|
||||||
|
|
||||||
СоответствиеMIME = Новый Соответствие;
|
СоответствиеMIME = Новый Соответствие;
|
||||||
СоответствиеMIME.Вставить("tweet_image", "image/jpeg");
|
СоответствиеMIME.Вставить("tweet_image", "image/jpeg");
|
||||||
СоответствиеMIME.Вставить("tweet_video", "video/mp4");
|
СоответствиеMIME.Вставить("tweet_video", "video/mp4");
|
||||||
@@ -332,22 +340,22 @@
|
|||||||
Поля.Вставить("media_data" , Base64Строка(Файл));
|
Поля.Вставить("media_data" , Base64Строка(Файл));
|
||||||
Поля.Вставить("media_category", Тип);
|
Поля.Вставить("media_category", Тип);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
ЧтениеДанных = Новый ЧтениеДанных(Файл);
|
ЧтениеДанных = Новый ЧтениеДанных(Файл);
|
||||||
МассивЧтения = ЧтениеДанных.РазделитьНаЧастиПо(4*1024*1024);
|
МассивЧтения = ЧтениеДанных.РазделитьНаЧастиПо(Количество * Единица * Единица);
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить("command" , "INIT");
|
Поля.Вставить(Command , "INIT");
|
||||||
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
||||||
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
||||||
Поля.Вставить("media_category" , Тип);
|
Поля.Вставить("media_category" , Тип);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
KeyИнициализации = ОтветИнициализации["media_key"];
|
KeyИнициализации = ОтветИнициализации["media_key"];
|
||||||
@@ -359,12 +367,12 @@
|
|||||||
ДвоичныеЧасти = Часть.ПолучитьДвоичныеДанные();
|
ДвоичныеЧасти = Часть.ПолучитьДвоичныеДанные();
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить("command" , "APPEND");
|
Поля.Вставить(Command , "APPEND");
|
||||||
Поля.Вставить("media_key" , KeyИнициализации);
|
Поля.Вставить("media_key" , KeyИнициализации);
|
||||||
Поля.Вставить("segment_index" , OPI_Инструменты.ЧислоВСтроку(Счетчик));
|
Поля.Вставить("segment_index" , OPI_Инструменты.ЧислоВСтроку(Счетчик));
|
||||||
Поля.Вставить("media" , ДвоичныеЧасти);
|
Поля.Вставить("media" , ДвоичныеЧасти);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Новый Структура, "POST", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Новый Структура, ВидЗапроса, URL);
|
||||||
|
|
||||||
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
|
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
|
||||||
|
|
||||||
@@ -372,16 +380,16 @@
|
|||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
Поля.Вставить("command" , "FINALIZE");
|
Поля.Вставить(Command , "FINALIZE");
|
||||||
Поля.Вставить("media_id", IDИнициализации);
|
Поля.Вставить("media_id", IDИнициализации);
|
||||||
|
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
СтатусОбработки = Ответ["processing_info"]["state"];
|
СтатусОбработки = Ответ["processing_info"]["state"];
|
||||||
Поля = Новый Структура;
|
Поля = Новый Структура;
|
||||||
|
|
||||||
Поля.Вставить("command" , "STATUS");
|
Поля.Вставить(Command , "STATUS");
|
||||||
Поля.Вставить("media_id", IDИнициализации);
|
Поля.Вставить("media_id", IDИнициализации);
|
||||||
|
|
||||||
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
|
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
|
||||||
@@ -419,29 +427,27 @@
|
|||||||
// https://developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем)
|
// https://developer.twitter.com/en/portal/dashboard и выбор конкретного проекта из списка (значек c ключем)
|
||||||
|
|
||||||
Параметры_ = Новый Соответствие;
|
Параметры_ = Новый Соответствие;
|
||||||
|
|
||||||
Разрешения = "tweet.read tweet.write tweet.moderate.write users.read "
|
Разрешения = "tweet.read tweet.write tweet.moderate.write users.read "
|
||||||
+ "follows.read follows.write offline.access space.read mute.read "
|
+ "follows.read follows.write offline.access space.read mute.read "
|
||||||
+ "mute.write like.read like.write list.read list.write block.read "
|
+ "mute.write like.read like.write list.read list.write block.read "
|
||||||
+ "block.write bookmark.read bookmark.write";
|
+ "block.write bookmark.read bookmark.write";
|
||||||
|
|
||||||
|
|
||||||
// Данные для API v2
|
// Данные для API v2
|
||||||
|
|
||||||
// redirect_uri - URL вашего http-сервиса (или другого обработчика запросов) для авторизации
|
// redirect_uri - URL вашего http-сервиса (или другого обработчика запросов) для авторизации
|
||||||
// scope - набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен
|
// scope - набор разрешений для получаемого ключа. Может быть любой, но offline.access обязателен
|
||||||
// client_id - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
// client_id - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
||||||
// client_secret - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
// client_secret - Из OAuth 2.0 Client ID and Client Secret страницы настроек Twitter Developer
|
||||||
//access_token - ПолучитьСсылкуАвторизации() -> Браузер -> http-запрос с code придет на адрес redirect_uri -> ПолучитьТокен(code)
|
// access_token - ПолучитьСсылкуАвторизации() -> Браузер -> code придет на redirect_uri -> ПолучитьТокен(code)
|
||||||
//refresh_token - Приходит вместе с access_token и используется для его обновления (время жизни access_token - 2 часа).
|
// refresh_token - Приходит вместе с access_token и используется для его обновления (время жизни access_token - 2 ч)
|
||||||
// Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token. При следующем обновлении
|
// Обновление происходит методом ОбновитьТокен с новыми access_token и refresh_token.
|
||||||
// нужно использовать уже новый refresh_token, так что захардкодить не получится (access_token тоже не получится)
|
// При следующем обновлении нужно использовать уже новый refresh_token, так что захардкодить
|
||||||
|
// не получится (access_token тоже не получится)
|
||||||
|
|
||||||
// |--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов
|
// |--> ОбновитьТокен() ->|access_token --> Используется в т-нии 2-х часов для запросов
|
||||||
// | |refresh_token --|
|
// | |refresh_token --|
|
||||||
// |--------[через 2 ч.]-------------------|
|
// |--------[через 2 ч.]-------------------|
|
||||||
|
|
||||||
|
|
||||||
// Данные для API v1.1
|
// Данные для API v1.1
|
||||||
|
|
||||||
// oauth_token - из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
// oauth_token - из Authentication Tokens -> Access Token and Secret страницы настроек Twitter Developer
|
||||||
@@ -479,6 +485,8 @@
|
|||||||
ВерсияАпи = "1.0";
|
ВерсияАпи = "1.0";
|
||||||
СтрокаСигнатуры = "";
|
СтрокаСигнатуры = "";
|
||||||
Подпись = "";
|
Подпись = "";
|
||||||
|
OCK = "oauth_consumer_key";
|
||||||
|
OTK = "oauth_token";
|
||||||
ТекущаяДатаUNIX = OPI_Инструменты.UNIXTime(ТекущаяДатаСеанса());
|
ТекущаяДатаUNIX = OPI_Инструменты.UNIXTime(ТекущаяДатаСеанса());
|
||||||
ТекущаяДатаUNIX = OPI_Инструменты.ЧислоВСтроку(ТекущаяДатаUNIX);
|
ТекущаяДатаUNIX = OPI_Инструменты.ЧислоВСтроку(ТекущаяДатаUNIX);
|
||||||
ТаблицаПараметров = Новый ТаблицаЗначений;
|
ТаблицаПараметров = Новый ТаблицаЗначений;
|
||||||
@@ -494,12 +502,12 @@
|
|||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_consumer_key";
|
НоваяСтрока.Ключ = OCK;
|
||||||
НоваяСтрока.Значение = Параметры["oauth_consumer_key"];
|
НоваяСтрока.Значение = Параметры[OCK];
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_token";
|
НоваяСтрока.Ключ = OTK;
|
||||||
НоваяСтрока.Значение = Параметры["oauth_token"];
|
НоваяСтрока.Значение = Параметры[OTK];
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
НоваяСтрока.Ключ = "oauth_version";
|
НоваяСтрока.Ключ = "oauth_version";
|
||||||
@@ -547,7 +555,6 @@
|
|||||||
+ "&"
|
+ "&"
|
||||||
+ КодироватьСтроку(Параметры["oauth_token_secret"], СпособКодированияСтроки.КодировкаURL);
|
+ КодироватьСтроку(Параметры["oauth_token_secret"], СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
|
|
||||||
Сигнатура = OPI_Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(Подпись)
|
Сигнатура = OPI_Криптография.HMAC(ПолучитьДвоичныеДанныеИзСтроки(Подпись)
|
||||||
, ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры)
|
, ПолучитьДвоичныеДанныеИзСтроки(СтрокаСигнатуры)
|
||||||
, ХешФункция.SHA1
|
, ХешФункция.SHA1
|
||||||
@@ -555,14 +562,15 @@
|
|||||||
|
|
||||||
Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL);
|
Сигнатура = КодироватьСтроку(Base64Строка(Сигнатура), СпособКодированияСтроки.КодировкаURL);
|
||||||
|
|
||||||
|
Разделитель = """,";
|
||||||
ЗаголовокАвторизации = ЗаголовокАвторизации
|
ЗаголовокАвторизации = ЗаголовокАвторизации
|
||||||
+ "OAuth "
|
+ "OAuth "
|
||||||
+ "oauth_consumer_key=""" + Параметры["oauth_consumer_key"] + ""","
|
+ "oauth_consumer_key=""" + Параметры[OCK] + Разделитель
|
||||||
+ "oauth_token=""" + Параметры["oauth_token"] + ""","
|
+ "oauth_token=""" + Параметры[OTK] + Разделитель
|
||||||
+ "oauth_signature_method=""" + МетодХэширования + ""","
|
+ "oauth_signature_method=""" + МетодХэширования + Разделитель
|
||||||
+ "oauth_timestamp=""" + ТекущаяДатаUNIX + ""","
|
+ "oauth_timestamp=""" + ТекущаяДатаUNIX + Разделитель
|
||||||
+ "oauth_nonce=""" + ТекущаяДатаUNIX + ""","
|
+ "oauth_nonce=""" + ТекущаяДатаUNIX + Разделитель
|
||||||
+ "oauth_version=""" + ВерсияАпи + ""","
|
+ "oauth_version=""" + ВерсияАпи + Разделитель
|
||||||
+ "oauth_signature=""" + Сигнатура;
|
+ "oauth_signature=""" + Сигнатура;
|
||||||
|
|
||||||
СоответствиеЗаголовка = Новый Соответствие;
|
СоответствиеЗаголовка = Новый Соответствие;
|
||||||
@@ -572,6 +580,7 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
Функция СоздатьЗаголовокАвторизацииV2(Знач Параметры)
|
Функция СоздатьЗаголовокАвторизацииV2(Знач Параметры)
|
||||||
|
|
||||||
СоответствиеВозврата = Новый Соответствие;
|
СоответствиеВозврата = Новый Соответствие;
|
||||||
@@ -580,5 +589,6 @@
|
|||||||
Возврат СоответствиеВозврата;
|
Возврат СоответствиеВозврата;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
// BSLLS:LatinAndCyrillicSymbolInWord-on
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
@@ -68,6 +68,9 @@
|
|||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
СтрокаВложений = "";
|
СтрокаВложений = "";
|
||||||
|
Hash = "hash";
|
||||||
|
Photo = "photo";
|
||||||
|
Serv = "server";
|
||||||
|
|
||||||
Для Каждого КартинкаПоста Из МассивКартинок Цикл
|
Для Каждого КартинкаПоста Из МассивКартинок Цикл
|
||||||
|
|
||||||
@@ -83,7 +86,6 @@
|
|||||||
ЗначениеКартинка = КартинкаПоста;
|
ЗначениеКартинка = КартинкаПоста;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
Файлы.Вставить(КлючКартинка, ЗначениеКартинка);
|
Файлы.Вставить(КлючКартинка, ЗначениеКартинка);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.getWallUploadServer", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.getWallUploadServer", Параметры_);
|
||||||
@@ -92,20 +94,20 @@
|
|||||||
Параметры_.Вставить("upload_url", URL);
|
Параметры_.Вставить("upload_url", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы);
|
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, Файлы);
|
||||||
СерверФото = OPI_Инструменты.ЧислоВСтроку(Ответ["server"]);
|
СерверФото = OPI_Инструменты.ЧислоВСтроку(Ответ[Serv]);
|
||||||
|
|
||||||
Параметры_.Вставить("hash" , Ответ["hash"]);
|
Параметры_.Вставить(Hash , Ответ[Hash]);
|
||||||
Параметры_.Вставить("photo" , Ответ["photo"]);
|
Параметры_.Вставить(Photo , Ответ[Photo]);
|
||||||
Параметры_.Вставить("server" , СерверФото);
|
Параметры_.Вставить(Serv , СерверФото);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.saveWallPhoto", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/photos.saveWallPhoto", Параметры_);
|
||||||
ОтветСоответствие = Ответ.Получить("response")[0];
|
ОтветСоответствие = Ответ.Получить("response")[0];
|
||||||
|
|
||||||
Параметры_.Удалить("hash");
|
Параметры_.Удалить(Hash);
|
||||||
Параметры_.Удалить("photo");
|
Параметры_.Удалить(Photo);
|
||||||
Параметры_.Удалить("server");
|
Параметры_.Удалить(Serv);
|
||||||
|
|
||||||
ФотоID = "photo"
|
ФотоID = Photo
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("owner_id"))
|
+ OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("owner_id"))
|
||||||
+ "_"
|
+ "_"
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("id"));
|
+ OPI_Инструменты.ЧислоВСтроку(ОтветСоответствие.Получить("id"));
|
||||||
@@ -160,7 +162,8 @@
|
|||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.getPhotoUploadServer", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/polls.getPhotoUploadServer", Параметры_);
|
||||||
URL = Ответ["response"]["upload_url"];
|
Response = "response";
|
||||||
|
URL = Ответ[Response]["upload_url"];
|
||||||
IDФото = "";
|
IDФото = "";
|
||||||
|
|
||||||
Параметры_.Вставить("upload_url", URL);
|
Параметры_.Вставить("upload_url", URL);
|
||||||
@@ -185,7 +188,7 @@
|
|||||||
Параметры_.Вставить("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"];
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -198,7 +201,7 @@
|
|||||||
Для Каждого Ответ Из МассивОтветов Цикл
|
Для Каждого Ответ Из МассивОтветов Цикл
|
||||||
|
|
||||||
Если Первый Тогда
|
Если Первый Тогда
|
||||||
Первый = Ложь
|
Первый = Ложь;
|
||||||
Иначе
|
Иначе
|
||||||
Ответы = Ответы + ", ";
|
Ответы = Ответы + ", ";
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -214,14 +217,13 @@
|
|||||||
Параметры_.Вставить("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"))
|
||||||
+ "_"
|
+ "_"
|
||||||
+ OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("id"));
|
+ OPI_Инструменты.ЧислоВСтроку(ОпросСоответствие.Получить("id"));
|
||||||
|
|
||||||
|
|
||||||
Параметры_.Вставить("attachments", ОпросID);
|
Параметры_.Вставить("attachments", ОпросID);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_);
|
||||||
@@ -283,7 +285,6 @@
|
|||||||
Путь = ПолучитьИмяВременногоФайла("jpeg");
|
Путь = ПолучитьИмяВременногоФайла("jpeg");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
Файлы = Новый Соответствие;
|
Файлы = Новый Соответствие;
|
||||||
Файлы.Вставить(Путь, Картинка);
|
Файлы.Вставить(Путь, Картинка);
|
||||||
|
|
||||||
@@ -325,7 +326,6 @@
|
|||||||
Путь = ПолучитьИмяВременногоФайла("jpeg");
|
Путь = ПолучитьИмяВременногоФайла("jpeg");
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
Файлы = Новый Соответствие;
|
Файлы = Новый Соответствие;
|
||||||
Файлы.Вставить(Путь, Картинка);
|
Файлы.Вставить(Путь, Картинка);
|
||||||
|
|
||||||
@@ -464,9 +464,10 @@
|
|||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["owner_id"]);
|
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["owner_id"]);
|
||||||
|
ОбъектВК = "wall" + OPI_Инструменты.ЧислоВСтроку(IDСтены) + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста);
|
||||||
|
|
||||||
Параметры_.Вставить("type" , "post");
|
Параметры_.Вставить("type" , "post");
|
||||||
Параметры_.Вставить("object" , "wall" + OPI_Инструменты.ЧислоВСтроку(IDСтены) + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
Параметры_.Вставить("object" , ОбъектВК);
|
||||||
Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
||||||
Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены));
|
Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены));
|
||||||
Параметры_.Вставить("from_group" , 0);
|
Параметры_.Вставить("from_group" , 0);
|
||||||
@@ -489,6 +490,7 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера ВК
|
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера ВК
|
||||||
//@skip-check method-too-many-params
|
//@skip-check method-too-many-params
|
||||||
|
// BSLLS:NumberOfOptionalParams-off
|
||||||
Функция СделатьРепост(Знач IDПоста
|
Функция СделатьРепост(Знач IDПоста
|
||||||
, Знач IDСтены = ""
|
, Знач IDСтены = ""
|
||||||
, Знач ЦелеваяСтена = ""
|
, Знач ЦелеваяСтена = ""
|
||||||
@@ -514,6 +516,7 @@
|
|||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
// BSLLS:NumberOfOptionalParams-on
|
||||||
|
|
||||||
// Написать сообщение.
|
// Написать сообщение.
|
||||||
//
|
//
|
||||||
@@ -631,22 +634,23 @@
|
|||||||
// Получить статистику постов.
|
// Получить статистику постов.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
// МассивIDПостов - Массив из Строка,Число - Массив ID постов
|
// МассивИДПостов - Массив из Строка,Число - Массив ID постов
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Массив из Произвольный - Массив данных статистики по постам
|
// Массив из Произвольный - Массив данных статистики по постам
|
||||||
Функция ПолучитьСтатистикуПостов(Знач МассивIDПостов, Знач Параметры = "") Экспорт
|
Функция ПолучитьСтатистикуПостов(Знач МассивИДПостов, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
МассивОтветов = Новый Массив;
|
МассивОтветов = Новый Массив;
|
||||||
МассивНабора = Новый Массив;
|
МассивНабора = Новый Массив;
|
||||||
|
МаксимумПостов = 30;
|
||||||
|
|
||||||
Для Каждого Пост Из МассивIDПостов Цикл
|
Для Каждого Пост Из МассивИДПостов Цикл
|
||||||
|
|
||||||
МассивНабора.Добавить(OPI_Инструменты.ЧислоВСтроку(Пост));
|
МассивНабора.Добавить(OPI_Инструменты.ЧислоВСтроку(Пост));
|
||||||
|
|
||||||
Если МассивНабора.Количество() = 30 Тогда
|
Если МассивНабора.Количество() = МаксимумПостов Тогда
|
||||||
|
|
||||||
СтрокаНомеров = СтрСоединить(МассивНабора, ",");
|
СтрокаНомеров = СтрСоединить(МассивНабора, ",");
|
||||||
Параметры_.Вставить("post_ids", СтрокаНомеров);
|
Параметры_.Вставить("post_ids", СтрокаНомеров);
|
||||||
@@ -658,7 +662,8 @@
|
|||||||
МассивОтветов.Добавить(ЭлементСтатистики);
|
МассивОтветов.Добавить(ЭлементСтатистики);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
МассивНабора = Новый Массив
|
МассивНабора = Новый Массив;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
@@ -696,14 +701,16 @@
|
|||||||
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
||||||
|
|
||||||
МассивСтруктур = Новый Массив;
|
МассивСтруктур = Новый Массив;
|
||||||
|
ДатаСтарт = Формат(ТекущаяДатаСеанса() - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
|
||||||
|
ДатаСтоп = Формат(ДобавитьМесяц(ТекущаяДатаСеанса(), 24) - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0");
|
||||||
|
|
||||||
СтруктураКампании = Новый Структура;
|
СтруктураКампании = Новый Структура;
|
||||||
СтруктураКампании.Вставить("type" , "promoted_posts");
|
СтруктураКампании.Вставить("type" , "promoted_posts");
|
||||||
СтруктураКампании.Вставить("name" , Наименование);
|
СтруктураКампании.Вставить("name" , Наименование);
|
||||||
СтруктураКампании.Вставить("day_limit" , 0);
|
СтруктураКампании.Вставить("day_limit" , 0);
|
||||||
СтруктураКампании.Вставить("all_limit" , 0);
|
СтруктураКампании.Вставить("all_limit" , 0);
|
||||||
СтруктураКампании.Вставить("start_time" , Формат(ТекущаяДатаСеанса() - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
СтруктураКампании.Вставить("start_time" , ДатаСтарт);
|
||||||
СтруктураКампании.Вставить("stop_time" , Формат(ДобавитьМесяц(ТекущаяДатаСеанса(), 24) - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
СтруктураКампании.Вставить("stop_time" , ДатаСтоп);
|
||||||
СтруктураКампании.Вставить("status" , 1);
|
СтруктураКампании.Вставить("status" , 1);
|
||||||
|
|
||||||
МассивСтруктур.Добавить(СтруктураКампании);
|
МассивСтруктур.Добавить(СтруктураКампании);
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
#Область НастройкиИИнформация
|
#Область НастройкиИИнформация
|
||||||
@@ -136,7 +137,11 @@
|
|||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Ответ сервера Viber
|
// Произвольный, HTTPОтвет - Ответ сервера Viber
|
||||||
Функция ОтправитьТекстовоеСообщение(Знач Токен, Знач Текст, Знач IDПользователя, Знач ОтправкаВКанал, Знач Клавиатура = "") Экспорт
|
Функция ОтправитьТекстовоеСообщение(Знач Токен
|
||||||
|
, Знач Текст
|
||||||
|
, Знач IDПользователя
|
||||||
|
, Знач ОтправкаВКанал
|
||||||
|
, Знач Клавиатура = "") Экспорт
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "text", IDПользователя, ОтправкаВКанал, , Текст, Клавиатура);
|
Возврат ОтправитьСообщение(Токен, "text", IDПользователя, ОтправкаВКанал, , Текст, Клавиатура);
|
||||||
|
|
||||||
@@ -171,7 +176,12 @@
|
|||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Ответ сервера Viber
|
// Произвольный, HTTPОтвет - Ответ сервера Viber
|
||||||
Функция ОтправитьФайл(Знач Токен, Знач URL, Знач IDПользователя, Знач ОтправкаВКанал, Знач Расширение, Знач Размер = "") Экспорт
|
Функция ОтправитьФайл(Знач Токен
|
||||||
|
, Знач URL
|
||||||
|
, Знач IDПользователя
|
||||||
|
, Знач ОтправкаВКанал
|
||||||
|
, Знач Расширение
|
||||||
|
, Знач Размер = "") Экспорт
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Размер) Тогда
|
Если Не ЗначениеЗаполнено(Размер) Тогда
|
||||||
|
|
||||||
@@ -207,7 +217,11 @@
|
|||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Ответ сервера Viber
|
// Произвольный, HTTPОтвет - Ответ сервера Viber
|
||||||
Функция ОтправитьКонтакт(Знач Токен, Знач ИмяКонтакта, Знач НомерТелефона, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
Функция ОтправитьКонтакт(Знач Токен
|
||||||
|
, Знач ИмяКонтакта
|
||||||
|
, Знач НомерТелефона
|
||||||
|
, Знач IDПользователя
|
||||||
|
, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
СтруктураКонтакта = Новый Структура;
|
СтруктураКонтакта = Новый Структура;
|
||||||
СтруктураКонтакта.Вставить("name", ИмяКонтакта);
|
СтруктураКонтакта.Вставить("name", ИмяКонтакта);
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
#Область HTTPМетоды
|
#Область HTTPМетоды
|
||||||
@@ -41,7 +42,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СтруктураURL = РазбитьURL(URL);
|
СтруктураURL = РазбитьURL(URL);
|
||||||
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL());
|
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
Запрос = Новый HTTPЗапрос(СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры), Заголовки);
|
Запрос = Новый HTTPЗапрос(СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры), Заголовки);
|
||||||
Ответ = Соединение.Получить(Запрос);
|
Ответ = Соединение.Получить(Запрос);
|
||||||
|
|
||||||
@@ -57,11 +58,8 @@
|
|||||||
|
|
||||||
// BSLLS:CognitiveComplexity-off
|
// BSLLS:CognitiveComplexity-off
|
||||||
|
|
||||||
Функция PostMultipart(Знач URL
|
Функция PostMultipart(Знач URL, Знач Параметры, Знач Файлы = "", Знач ТипКонтента = "image/jpeg",
|
||||||
, Знач Параметры
|
Знач ДопЗаголовки = "") Экспорт
|
||||||
, Знач Файлы = ""
|
|
||||||
, Знач ТипКонтента = "image/jpeg"
|
|
||||||
, Знач ДопЗаголовки = "") Экспорт
|
|
||||||
|
|
||||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
@@ -71,12 +69,14 @@
|
|||||||
Файлы = Новый Соответствие;
|
Файлы = Новый Соответствие;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
|
ЗаменаТочки = "___";
|
||||||
|
GZip = "gzip";
|
||||||
|
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
|
||||||
СтруктураURL = РазбитьURL(URL);
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
|
||||||
Заголовки = Новый Соответствие();
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
|
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
|
||||||
Заголовки.Вставить("Accept-Encoding" , "gzip");
|
Заголовки.Вставить("Accept-Encoding", GZip);
|
||||||
Заголовки.Вставить("Accept", "*/*");
|
Заголовки.Вставить("Accept", "*/*");
|
||||||
Заголовки.Вставить("Connection", "keep-alive");
|
Заголовки.Вставить("Connection", "keep-alive");
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL());
|
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
НовыйЗапрос = Новый HTTPЗапрос(СтруктураURL["Адрес"], Заголовки);
|
НовыйЗапрос = Новый HTTPЗапрос(СтруктураURL["Адрес"], Заголовки);
|
||||||
ТелоЗапроса = НовыйЗапрос.ПолучитьТелоКакПоток();
|
ТелоЗапроса = НовыйЗапрос.ПолучитьТелоКакПоток();
|
||||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", "", Ложь);
|
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", "", Ложь);
|
||||||
@@ -115,21 +115,19 @@
|
|||||||
Счетчик = 0;
|
Счетчик = 0;
|
||||||
Для Каждого Файл Из Файлы Цикл
|
Для Каждого Файл Из Файлы Цикл
|
||||||
|
|
||||||
|
ПутьФайл = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||||
|
|
||||||
Если ТипКонтента = "image/jpeg" Тогда
|
Если ТипКонтента = "image/jpeg" Тогда
|
||||||
ИмяФайлаОтправки = "photo";
|
ИмяФайлаОтправки = "photo";
|
||||||
Иначе
|
Иначе
|
||||||
ИмяФайлаОтправки = СтрЗаменить(Файл.Ключ, "___", ".");
|
ИмяФайлаОтправки = СтрЗаменить(Файл.Ключ, ЗаменаТочки, ".");
|
||||||
ИмяФайлаОтправки = Лев(ИмяФайлаОтправки, СтрНайти(ИмяФайлаОтправки, ".") - 1);
|
ИмяФайлаОтправки = Лев(ИмяФайлаОтправки, СтрНайти(ИмяФайлаОтправки, ".") - 1);
|
||||||
ИмяФайлаОтправки = ?(ЗначениеЗаполнено(ИмяФайлаОтправки)
|
ИмяФайлаОтправки = ?(ЗначениеЗаполнено(ИмяФайлаОтправки), ИмяФайлаОтправки, СтрЗаменить(Файл.Ключ,
|
||||||
, ИмяФайлаОтправки
|
ЗаменаТочки, "."));
|
||||||
, СтрЗаменить(Файл.Ключ, "___", "."));
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||||
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name="""
|
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + ИмяФайлаОтправки + """; filename=""" + ПутьФайл
|
||||||
+ ИмяФайлаОтправки
|
|
||||||
+"""; filename="""
|
|
||||||
+ СтрЗаменить(Файл.Ключ, "___", ".")
|
|
||||||
+ """");
|
+ """");
|
||||||
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
ЗаписьТекста.ЗаписатьСтроку("Content-Type: " + ТипКонтента);
|
ЗаписьТекста.ЗаписатьСтроку("Content-Type: " + ТипКонтента);
|
||||||
@@ -148,16 +146,15 @@
|
|||||||
|
|
||||||
Ответ = Соединение.ВызватьHTTPМетод("POST", НовыйЗапрос);
|
Ответ = Соединение.ВызватьHTTPМетод("POST", НовыйЗапрос);
|
||||||
|
|
||||||
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = "gzip" Или
|
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = GZip Или Ответ.Заголовки.Получить(
|
||||||
Ответ.Заголовки.Получить("content-encoding") = "gzip";
|
"content-encoding") = GZip;
|
||||||
|
|
||||||
Если НужнаРаспаковка Тогда
|
Если НужнаРаспаковка Тогда
|
||||||
Ответ = РаспаковатьОтвет(Ответ);
|
Ответ = РаспаковатьОтвет(Ответ);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные")
|
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), JsonВСтруктуру(
|
||||||
, JsonВСтруктуру(Ответ)
|
Ответ.ПолучитьТелоКакДвоичныеДанные()));
|
||||||
, JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные()));
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -169,12 +166,13 @@
|
|||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
GZip = "gzip";
|
||||||
ТипДанных = ?(JSON, "application/json", "application/x-www-form-urlencoded");
|
ТипДанных = ?(JSON, "application/json", "application/x-www-form-urlencoded");
|
||||||
СтруктураURL = РазбитьURL(URL);
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
|
||||||
Заголовки = Новый Соответствие();
|
Заголовки = Новый Соответствие;
|
||||||
Заголовки.Вставить("Content-Type", ТипДанных);
|
Заголовки.Вставить("Content-Type", ТипДанных);
|
||||||
Заголовки.Вставить("Accept-Encoding" , "gzip");
|
Заголовки.Вставить("Accept-Encoding", GZip);
|
||||||
Заголовки.Вставить("Accept", "*/*");
|
Заголовки.Вставить("Accept", "*/*");
|
||||||
Заголовки.Вставить("Connection", "keep-alive");
|
Заголовки.Вставить("Connection", "keep-alive");
|
||||||
|
|
||||||
@@ -186,7 +184,7 @@
|
|||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL());
|
Соединение = Новый HTTPСоединение(СтруктураURL["Сервер"], 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
НовыйЗапрос = Новый HTTPЗапрос(СтруктураURL["Адрес"], Заголовки);
|
НовыйЗапрос = Новый HTTPЗапрос(СтруктураURL["Адрес"], Заголовки);
|
||||||
|
|
||||||
Если JSON Тогда
|
Если JSON Тогда
|
||||||
@@ -200,8 +198,8 @@
|
|||||||
|
|
||||||
Ответ = Соединение.ВызватьHTTPМетод("POST", НовыйЗапрос);
|
Ответ = Соединение.ВызватьHTTPМетод("POST", НовыйЗапрос);
|
||||||
|
|
||||||
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = "gzip" Или
|
НужнаРаспаковка = Ответ.Заголовки.Получить("Content-Encoding") = GZip Или Ответ.Заголовки.Получить(
|
||||||
Ответ.Заголовки.Получить("content-encoding") = "gzip";
|
"content-encoding") = GZip;
|
||||||
|
|
||||||
Если НужнаРаспаковка Тогда
|
Если НужнаРаспаковка Тогда
|
||||||
Ответ = РаспаковатьОтвет(Ответ);
|
Ответ = РаспаковатьОтвет(Ответ);
|
||||||
@@ -212,7 +210,7 @@
|
|||||||
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
Ответ = JsonВСтруктуру(Ответ)
|
Ответ = JsonВСтруктуру(Ответ);
|
||||||
Исключение
|
Исключение
|
||||||
Ответ = ПолучитьСтрокуИзДвоичныхДанных(Ответ);
|
Ответ = ПолучитьСтрокуИзДвоичныхДанных(Ответ);
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
@@ -233,10 +231,8 @@
|
|||||||
|
|
||||||
МассивКлючЗначение = СтрРазделить(Параметр, "=");
|
МассивКлючЗначение = СтрРазделить(Параметр, "=");
|
||||||
|
|
||||||
|
|
||||||
Если МассивКлючЗначение.Количество() = КоличествоЧастей Тогда
|
Если МассивКлючЗначение.Количество() = КоличествоЧастей Тогда
|
||||||
СоответствиеВозврата.Вставить(МассивКлючЗначение[0]
|
СоответствиеВозврата.Вставить(МассивКлючЗначение[0], МассивКлючЗначение[1]);
|
||||||
, МассивКлючЗначение[1]);
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
@@ -278,7 +274,8 @@
|
|||||||
СтрокаПараметров = "?";
|
СтрокаПараметров = "?";
|
||||||
|
|
||||||
Для Каждого Параметр Из Параметры Цикл
|
Для Каждого Параметр Из Параметры Цикл
|
||||||
СтрокаПараметров = СтрокаПараметров + Параметр.Ключ + "=" + КодироватьСтроку(Параметр.Значение, СпособКодированияСтроки.КодировкаURL) + "&";
|
СтрокаПараметров = СтрокаПараметров + Параметр.Ключ + "=" + КодироватьСтроку(Параметр.Значение,
|
||||||
|
СпособКодированияСтроки.КодировкаURL) + "&";
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтрокаПараметров = Лев(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
СтрокаПараметров = Лев(СтрокаПараметров, СтрДлина(СтрокаПараметров) - 1);
|
||||||
@@ -319,7 +316,9 @@
|
|||||||
|
|
||||||
Функция JSONСтрокой(Знач Данные) Экспорт
|
Функция JSONСтрокой(Знач Данные) Экспорт
|
||||||
|
|
||||||
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь);
|
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, " ", Истина, ЭкранированиеСимволовJSON.Нет,
|
||||||
|
Ложь, Ложь, Ложь, Ложь);
|
||||||
|
|
||||||
ЗаписьJSON = Новый ЗаписьJSON;
|
ЗаписьJSON = Новый ЗаписьJSON;
|
||||||
ЗаписьJSON.ПроверятьСтруктуру = Истина;
|
ЗаписьJSON.ПроверятьСтруктуру = Истина;
|
||||||
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
||||||
@@ -336,7 +335,7 @@
|
|||||||
Процедура ВыполнитьСкрипт(Знач Текст) Экспорт
|
Процедура ВыполнитьСкрипт(Знач Текст) Экспорт
|
||||||
|
|
||||||
ИмяСкрипта = ПолучитьИмяВременногоФайла(".ps1");
|
ИмяСкрипта = ПолучитьИмяВременногоФайла(".ps1");
|
||||||
ТекстСкрипта = Новый ТекстовыйДокумент();
|
ТекстСкрипта = Новый ТекстовыйДокумент;
|
||||||
|
|
||||||
ТекстСкрипта.УстановитьТекст(Текст);
|
ТекстСкрипта.УстановитьТекст(Текст);
|
||||||
|
|
||||||
@@ -349,15 +348,6 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Функция РазмерДанныхB64(Знач Base64Строка) Экспорт
|
|
||||||
|
|
||||||
РазмерДанных = СтрДлина(Base64Строка)
|
|
||||||
- ?(Прав(Base64Строка, 1) = "=", 1, 0)
|
|
||||||
- ?(Прав(Base64Строка, 2) = "==", 1, 0);
|
|
||||||
|
|
||||||
Возврат Цел(РазмерДанных / 4 * 3);
|
|
||||||
|
|
||||||
Конецфункции
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -392,6 +382,8 @@
|
|||||||
//
|
//
|
||||||
// Требования: платформа 1С версии 8.3.10 и выше
|
// Требования: платформа 1С версии 8.3.10 и выше
|
||||||
|
|
||||||
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||||
|
|
||||||
Функция РаспаковатьОтвет(Ответ)
|
Функция РаспаковатьОтвет(Ответ)
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
@@ -411,7 +403,8 @@
|
|||||||
ЧтениеДанных.Пропустить(РазмерПрефиксаGZip);
|
ЧтениеДанных.Пропустить(РазмерПрефиксаGZip);
|
||||||
РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip;
|
РазмерСжатыхДанных = ЧтениеДанных.ИсходныйПоток().Размер() - РазмерПрефиксаGZip - РазмерПостфиксаGZip;
|
||||||
|
|
||||||
ПотокZip = Новый ПотокВПамяти(ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD() + ZipРазмерCDH() + ZipРазмерEOCD());
|
ПотокZip = Новый ПотокВПамяти(ZipРазмерLFH() + РазмерСжатыхДанных + ZipРазмерDD() + ZipРазмерCDH()
|
||||||
|
+ ZipРазмерEOCD());
|
||||||
ЗаписьДанных = Новый ЗаписьДанных(ПотокZip);
|
ЗаписьДанных = Новый ЗаписьДанных(ПотокZip);
|
||||||
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH());
|
ЗаписьДанных.ЗаписатьБуферДвоичныхДанных(ZipLFH());
|
||||||
ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных);
|
ЧтениеДанных.КопироватьВ(ЗаписьДанных, РазмерСжатыхДанных);
|
||||||
@@ -556,6 +549,8 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// BSLLS:LatinAndCyrillicSymbolInWord-on
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
@@ -27,13 +27,15 @@
|
|||||||
|
|
||||||
Функция HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока) Экспорт
|
Функция HMAC(Знач Ключ, Знач Данные, Тип, РазмерБлока) Экспорт
|
||||||
|
|
||||||
|
Дважды = 2;
|
||||||
|
|
||||||
Если Ключ.Размер() > РазмерБлока Тогда
|
Если Ключ.Размер() > РазмерБлока Тогда
|
||||||
Ключ = Хеш(Ключ, Тип);
|
Ключ = Хеш(Ключ, Тип);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Ключ.Размер() <= РазмерБлока Тогда
|
Если Ключ.Размер() <= РазмерБлока Тогда
|
||||||
Ключ = ПолучитьHexСтрокуИзДвоичныхДанных(Ключ);
|
Ключ = ПолучитьHexСтрокуИзДвоичныхДанных(Ключ);
|
||||||
Ключ = Лев(Ключ + ПовторитьСтроку("00", РазмерБлока), РазмерБлока * 2);
|
Ключ = Лев(Ключ + ПовторитьСтроку("00", РазмерБлока), РазмерБлока * Дважды);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ключ = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(Ключ));
|
Ключ = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(Ключ));
|
||||||
|
Reference in New Issue
Block a user