1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-04 03:48:40 +02:00

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

This commit is contained in:
Vitaly the Alpaca 2024-04-17 17:07:02 +00:00 committed by Vitaly the Alpaca (bot)
parent 007f342b2a
commit 0f2d3007e2
3 changed files with 147 additions and 119 deletions

View File

@ -74,7 +74,6 @@
КонецФункции
#КонецОбласти
#Область РаботаСЧатами

View File

@ -346,109 +346,126 @@
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
MediaKey = "media_key";
ProcessingInfo = "processing_info";
MIS = "media_id_string";
Command = "command";
ВидЗапроса = "POST";
Единица = 1024;
Количество = 4;
СоответствиеMIME = Новый Соответствие;
СоответствиеMIME.Вставить("tweet_image", "image/jpeg");
СоответствиеMIME.Вставить("tweet_video", "video/mp4");
СоответствиеMIME.Вставить("tweet_gif" , "image/gif");
ВидЗапроса = "POST";
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
URL = "https://upload.twitter.com/1.1/media/upload.json";
Размер = Файл.Размер();
Если Тип = "tweet_image" Тогда
Поля = Новый Структура;
Поля.Вставить("media_data" , Base64Строка(Файл));
Поля.Вставить("media_category", Тип);
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
Иначе
РазмерЧасти = Количество * Единица * Единица;
МассивЧтения = РазделитьДвоичныеДанные(Файл, РазмерЧасти);
Ответ = ЗагрузитьМедиаЧастями(Файл, Тип, ВидЗапроса, URL, Параметры_);
Поля = Новый Структура;
Поля.Вставить(Command , "INIT");
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
Поля.Вставить("media_category" , Тип);
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, ВидЗапроса, URL);
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
KeyИнициализации = ОтветИнициализации[MediaKey];
IDИнициализации = ОтветИнициализации[MIS];
Если Не ЗначениеЗаполнено(KeyИнициализации) Или Не ЗначениеЗаполнено(IDИнициализации) Тогда
Возврат ОтветИнициализации;
КонецЕсли;
Счетчик = 0;
Для Каждого Часть Из МассивЧтения Цикл
Поля = Новый Структура;
Поля.Вставить(Command , "APPEND");
Поля.Вставить("media_key" , KeyИнициализации);
Поля.Вставить("segment_index" , OPI_Инструменты.ЧислоВСтроку(Счетчик));
Поля.Вставить("media" , Часть);
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Новый Структура, ВидЗапроса, URL);
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
Счетчик = Счетчик + 1;
КонецЦикла;
Поля = Новый Структура;
Поля.Вставить(Command , "FINALIZE");
Поля.Вставить("media_id", IDИнициализации);
СтатусОбработки = ПолучитьСтатусОбработки(Параметры_, Поля, URL);
Если Не ТипЗнч(СтатусОбработки) = Тип("Строка") Тогда
Возврат СтатусОбработки;
КонецЕсли;
Поля = Новый Структура;
Поля.Вставить(Command , "STATUS");
Поля.Вставить("media_id", IDИнициализации);
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "GET", URL);
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
Информация = Ответ[ProcessingInfo];
КонецЕсли;
Если Не ЗначениеЗаполнено(Информация) Тогда
Возврат Ответ;
КонецЕсли;
СтатусОбработки = Информация["state"];
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
Возврат Ответ;
КонецЕсли;
КонецЦикла;
Возврат Ответ;
КонецФункции
Функция ЗагрузитьМедиаЧастями(Знач Файл, Знач Тип, Знач ВидЗапроса, Знач URL, Параметры)
Единица = 1024;
Количество = 4;
MediaKey = "media_key";
MIS = "media_id_string";
Command = "command";
Размер = Файл.Размер();
СоответствиеMIME = Новый Соответствие;
СоответствиеMIME.Вставить("tweet_image", "image/jpeg");
СоответствиеMIME.Вставить("tweet_video", "video/mp4");
СоответствиеMIME.Вставить("tweet_gif" , "image/gif");
РазмерЧасти = Количество * Единица * Единица;
МассивЧтения = РазделитьДвоичныеДанные(Файл, РазмерЧасти);
Поля = Новый Структура;
Поля.Вставить(Command , "INIT");
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
Поля.Вставить("media_category" , Тип);
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, ВидЗапроса, URL);
ОтветИнициализации = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
KeyИнициализации = ОтветИнициализации[MediaKey];
IDИнициализации = ОтветИнициализации[MIS];
Если Не ЗначениеЗаполнено(KeyИнициализации) Или Не ЗначениеЗаполнено(IDИнициализации) Тогда
Возврат ОтветИнициализации;
КонецЕсли;
Счетчик = 0;
Для Каждого Часть Из МассивЧтения Цикл
Если СтатусОбработки = "failed" Тогда
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
Поля = Новый Структура;
Поля.Вставить(Command , "APPEND");
Поля.Вставить("media_key" , KeyИнициализации);
Поля.Вставить("segment_index" , OPI_Инструменты.ЧислоВСтроку(Счетчик));
Поля.Вставить("media" , Часть);
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Новый Структура, ВидЗапроса, URL);
OPI_Инструменты.PostMultipart(URL, Поля, , , Авторизация);
Счетчик = Счетчик + 1;
КонецЦикла;
Поля = Новый Структура;
Поля.Вставить(Command , "FINALIZE");
Поля.Вставить("media_id", IDИнициализации);
СтатусОбработки = ПолучитьСтатусОбработки(Параметры, Поля, URL);
Если Не ТипЗнч(СтатусОбработки) = Тип("Строка") Тогда
Возврат СтатусОбработки;
КонецЕсли;
Ответ = ОжидатьЗавершенияОбработки(СтатусОбработки, IDИнициализации, URL, Параметры);
Возврат Ответ;
КонецФункции
Функция ОжидатьЗавершенияОбработки(Знач СтатусОбработки, Знач IDИнициализации, Знач URL, Знач Параметры)
ProcessingInfo = "processing_info";
Command = "command";
Поля = Новый Структура;
Поля.Вставить(Command , "STATUS");
Поля.Вставить("media_id", IDИнициализации);
Пока Строка(СтатусОбработки) = "pending" Или Строка(СтатусОбработки) = "in_progress" Цикл
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры, Поля, "GET", URL);
Ответ = OPI_Инструменты.Get(URL, Поля, Авторизация);
Информация = Ответ[ProcessingInfo];
Если Не ЗначениеЗаполнено(Информация) Тогда
Возврат Ответ;
КонецЕсли;
КонецЕсли;
СтатусОбработки = Информация["state"];
Если Не ЗначениеЗаполнено(СтатусОбработки) Тогда
Возврат Ответ;
КонецЕсли;
КонецЦикла;
Если СтатусОбработки = "failed" Тогда
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
КонецЕсли;
Возврат Ответ;

View File

@ -1840,39 +1840,13 @@
OPI_ПреобразованиеТипов.ПолучитьБулево(Основная);
OPI_ПреобразованиеТипов.ПолучитьБулево(Скрытая);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
PhotoID = "photo_id";
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
Ответ = ДобавитьПараметрКартинки(Картинка, ИДПодборки, Параметры_);
Если ЗначениеЗаполнено(Картинка) Тогда
ИДФото = ПолучитьИДКартинки(Картинка, Параметры_, "Товар");
Если Не ТипЗнч(ИДФото) = Тип("Строка") Тогда
Возврат ИДФото;
КонецЕсли;
Параметры_.Вставить(PhotoID, ИДФото);
Иначе
Если ЗначениеЗаполнено(ИДПодборки) Тогда
Подборки = ПолучитьМассивПодборок(ИДПодборки, Параметры_);
Если Не ТипЗнч(Подборки) = Тип("Массив") Тогда
Возврат Подборки;
КонецЕсли;
Если Не Подборки.Количество() = 0 Тогда
ИДФото = Подборки[0]["photo"]["id"];
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДФото);
Параметры_.Вставить(PhotoID, ИДФото);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Ответ) Тогда
Возврат Ответ;
КонецЕсли;
Параметры_.Вставить("title" , Название);
Параметры_.Вставить("main_album" , ?(Основная, 1, 0));
Параметры_.Вставить("is_hidden" , ?(Скрытая, 1, 0));
@ -1890,6 +1864,44 @@
КонецФункции
Функция ДобавитьПараметрКартинки(Знач Картинка, Знач ИДПодборки, Параметры)
PhotoID = "photo_id";
Если ЗначениеЗаполнено(Картинка) Тогда
ИДФото = ПолучитьИДКартинки(Картинка, Параметры, "Товар");
Если Не ТипЗнч(ИДФото) = Тип("Строка") Тогда
Возврат ИДФото;
КонецЕсли;
Параметры.Вставить(PhotoID, ИДФото);
Иначе
Если ЗначениеЗаполнено(ИДПодборки) Тогда
Подборки = ПолучитьМассивПодборок(ИДПодборки, Параметры);
Если Не ТипЗнч(Подборки) = Тип("Массив") Тогда
Возврат Подборки;
КонецЕсли;
Если Не Подборки.Количество() = 0 Тогда
ИДФото = Подборки[0]["photo"]["id"];
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИДФото);
Параметры.Вставить(PhotoID, ИДФото);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат "";
КонецФункции
Процедура ЗаполнитьПараметрыЗагрузкиФото(Знач Метод, Знач Ответ, Параметры)
Response = "response";