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:
parent
007f342b2a
commit
0f2d3007e2
@ -74,7 +74,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСЧатами
|
||||
|
@ -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" Тогда
|
||||
ВызватьИсключение "Твиттер не смог обработать загруженное вами видео";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
|
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user