1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-11-28 09:08:38 +02:00

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

This commit is contained in:
Vitaly the Alpaca 2024-05-11 07:57:20 +00:00 committed by Vitaly the Alpaca (bot)
parent 31718e262a
commit d420c8c1a9
5 changed files with 157 additions and 80 deletions

View File

@ -87,6 +87,10 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ВК_СоздатьУдалитьПост"
- name: Создать/Удалить составной пост
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ВК_СоздатьСоставнойПост"
- name: Создать опрос
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ВК_СоздатьОпрос"

View File

@ -213,6 +213,10 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ВК_СоздатьУдалитьПост"
- name: Создать/Удалить составной пост
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ВК_СоздатьСоставнойПост"
- name: Создать опрос
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ВК_СоздатьОпрос"

View File

@ -74,7 +74,7 @@
// Параметры:
// Текст - Строка - Текст поста - text
// МассивКартинок - Массив из Строка,ДвоичныеДанные - Массив картинок - pictures
// Рекламный - Булево - Признак ""Это реклама"" - ad
// Реклама - Булево - Признак ""Это реклама"" - ad
// СсылкаПодЗаписью - Строка - Ссылка (URL) под записью - url
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
//
@ -82,17 +82,14 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
Функция СоздатьПост(Знач Текст
, Знач МассивКартинок
, Знач Рекламный = Ложь
, Знач Реклама = Ложь
, Знач СсылкаПодЗаписью = ""
, Знач Параметры = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
OPI_ПреобразованиеТипов.ПолучитьСтроку(СсылкаПодЗаписью);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивКартинок);
OPI_ПреобразованиеТипов.ПолучитьБулево(Рекламный);
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
СтрокаВложений = "";
МассивВложений = Новый Массив;
Для Каждого КартинкаПоста Из МассивКартинок Цикл
@ -106,28 +103,58 @@
Возврат ОтветСоответствие;
КонецЕсли;
ФотоID = "photo"
+ OPI_Инструменты.ЧислоВСтроку(OwnerId)
+ "_"
+ OPI_Инструменты.ЧислоВСтроку(ObjectId);
OwnerId = OPI_Инструменты.ЧислоВСтроку(OwnerId);
ObjectId = OPI_Инструменты.ЧислоВСтроку(ObjectId);
ФотоID = "photo" + OwnerId + "_" + ObjectId;
СтрокаВложений = СтрокаВложений + ФотоID + ",";
МассивВложений.Добавить(ФотоID);
КонецЦикла;
СтрокаВложений = СтрокаВложений + СсылкаПодЗаписью;
Параметры_.Вставить("message" , Текст);
Параметры_.Вставить("attachments" , СтрокаВложений);
Параметры_.Вставить("mark_as_ads" , ?(Рекламный, 1, 0));
Параметры_.Вставить("close_comments" , ?(Рекламный, 1, 0));
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры_);
Ответ = СоздатьСоставнойПост(Текст, МассивВложений, Реклама, СсылкаПодЗаписью, Параметры);
Возврат Ответ;
КонецФункции
// Создать составной пост
// Создает пост на основе массива идетификаторов объектов (картинок, видео и др.)
//
// Параметры:
// Текст - Строка - Текст поста - text
// Объекты - Массив из Строка - Массив идентификаторов вида photo123_123 - objects
// Реклама - Булево - Признак ""Это реклама"" - ad
// СсылкаПодЗаписью - Строка - Ссылка (URL) под записью - url
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
Функция СоздатьСоставнойПост(Знач Текст
, Знач Объекты
, Знач Реклама = Ложь
, Знач СсылкаПодЗаписью = ""
, Знач Параметры = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
OPI_ПреобразованиеТипов.ПолучитьСтроку(СсылкаПодЗаписью);
OPI_ПреобразованиеТипов.ПолучитьБулево(Реклама);
Параметры = ПолучитьСтандартныеПараметры(Параметры);
СтрокаВложений = СтрСоединить(Объекты, ",");
СтрокаВложений = СтрокаВложений + СсылкаПодЗаписью;
Параметры.Вставить("message" , Текст);
Параметры.Вставить("attachments" , СтрокаВложений);
Параметры.Вставить("mark_as_ads" , ?(Реклама, 1, 0));
Параметры.Вставить("close_comments" , ?(Реклама, 1, 0));
Ответ = OPI_Инструменты.Get("api.vk.com/method/wall.post", Параметры);
Возврат Ответ;
КонецФункции
// Удалить пост
// Удаляет пост по id
//
@ -346,8 +373,8 @@
КонецФункции
// Загрузить видео
// Загружает видео в группу
// Загрузить видео на сервер
// Загружает видео в группу с возможностью его дальнейшего использования
//
// Параметры:
// Видео - Строка, ДвоичныеДанные - Файл видео - file
@ -358,7 +385,11 @@
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
Функция ЗагрузитьВидео(Знач Видео, Знач Наименование, Знач Описание = "", Знач Альбом = "", Знач Параметры = "") Экспорт
Функция ЗагрузитьВидеоНаСервер(Знач Видео
, Знач Наименование
, Знач Описание = ""
, Знач Альбом = ""
, Знач Параметры = "") Экспорт
Параметры = ПолучитьСтандартныеПараметры(Параметры);
@ -392,6 +423,74 @@
КонецФункции
// Загрузить фото на сервер
// Загружает фото на сервер для его дальнейшего использования
//
// Параметры:
// Картинка - Строка, ДвоичныеДанные - Файл картинки - file
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры - auth - JSON авторизации или путь к .json
// Вид - Строка - Вид загрузки (Пост, Товар, История, Опрос, Прочее) - type
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от VK
Функция ЗагрузитьФотоНаСервер(Знач Картинка, Знач Параметры = "", Знач Вид = "Пост") Экспорт
Параметры = ПолучитьСтандартныеПараметры(Параметры);
Метод = ОпределитьМетодЗагрузкиИзображений(Вид);
Файлы = Новый Соответствие;
Response = "response";
URL = "api.vk.com/method/";
Загрузка = URL + Метод["Загрузка"];
Сохранение = URL + Метод["Сохранение"];
Если ТипЗнч(Картинка) = Тип("Строка") Тогда
КлючКартинка = СтрЗаменить(Картинка, ".", "___");
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
Иначе
КлючКартинка = "image___jpeg";
КонецЕсли;
Файлы.Вставить(КлючКартинка, Картинка);
Для Н = 1 По 5 Цикл
Ответ = OPI_Инструменты.Get(Загрузка, Параметры);
Результат = Ответ[Response];
Если ЗначениеЗаполнено(Результат) Тогда
URL = Результат["upload_url"];
Если Не ЗначениеЗаполнено(URL) Тогда
Возврат Ответ;
КонецЕсли;
Иначе
Возврат Ответ;
КонецЕсли;
Параметры.Вставить("upload_url", URL);
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы);
Если ТипЗнч(Ответ) = Тип("Соответствие") Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ТипЗнч(Ответ) <> Тип("Соответствие") Тогда
Возврат ПолучитьСтрокуИзДвоичныхДанных(Ответ);
КонецЕсли;
ЗаполнитьПараметрыЗагрузкиФото(Метод, Ответ, Параметры);
Ответ = OPI_Инструменты.Get(Сохранение, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСОбсуждениями
@ -1710,63 +1809,6 @@
КонецФункции
Функция ЗагрузитьФотоНаСервер(Знач Картинка, Знач Параметры, Знач Вид = "Пост")
Метод = ОпределитьМетодЗагрузкиИзображений(Вид);
Файлы = Новый Соответствие;
Response = "response";
URL = "api.vk.com/method/";
Загрузка = URL + Метод["Загрузка"];
Сохранение = URL + Метод["Сохранение"];
Если ТипЗнч(Картинка) = Тип("Строка") Тогда
КлючКартинка = СтрЗаменить(Картинка, ".", "___");
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
Иначе
КлючКартинка = "image___jpeg";
КонецЕсли;
Файлы.Вставить(КлючКартинка, Картинка);
Для Н = 1 По 5 Цикл
Ответ = OPI_Инструменты.Get(Загрузка, Параметры);
Результат = Ответ[Response];
Если ЗначениеЗаполнено(Результат) Тогда
URL = Результат["upload_url"];
Если Не ЗначениеЗаполнено(URL) Тогда
Возврат Ответ;
КонецЕсли;
Иначе
Возврат Ответ;
КонецЕсли;
Параметры.Вставить("upload_url", URL);
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры, Файлы);
Если ТипЗнч(Ответ) = Тип("Соответствие") Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ТипЗнч(Ответ) <> Тип("Соответствие") Тогда
Возврат ПолучитьСтрокуИзДвоичныхДанных(Ответ);
КонецЕсли;
ЗаполнитьПараметрыЗагрузкиФото(Метод, Ответ, Параметры);
Ответ = OPI_Инструменты.Get(Сохранение, Параметры);
Возврат Ответ;
КонецФункции
Функция ОпределитьМетодЗагрузкиИзображений(Знач Вид)
СоответствиеМетодов = Новый Соответствие;

View File

@ -818,6 +818,32 @@
КонецПроцедуры
Процедура ВК_СоздатьСоставнойПост() Экспорт
Response = "response";
Параметры = ПолучитьПараметрыВК();
Текст = "Пост из автотеста";
URL = "https://github.com/Bayselonarrend/OpenIntegrations";
Картинка = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Picture");
Видео = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Video");
ЗагрузкаКартинки = OPI_VK.ЗагрузитьФотоНаСервер(Картинка, Параметры)["response"][0];
ЗагрузкаВидео = OPI_VK.ЗагрузитьВидеоНаСервер(Видео, "Новое видео", , , Параметры);
ВладелецКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["owner_id"]);
ВладелецВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["owner_id"]);
IDКартинки = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаКартинки["id"]);
IDВидео = OPI_Инструменты.ЧислоВСтроку(ЗагрузкаВидео["video_id"]);
МассивВложений = Новый Массив;
МассивВложений.Добавить("photo" + ВладелецКартинки + "_" + IDКартинки);
МассивВложений.Добавить("video" + ВладелецВидео + "_" + IDВидео);
Результат = OPI_VK.СоздатьСоставнойПост(Текст, МассивВложений, , , Параметры);
КонецПроцедуры
Процедура ВК_СоздатьОпрос() Экспорт
Параметры = ПолучитьПараметрыВК();

View File

@ -109,6 +109,7 @@
НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте);
НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте);
НовыйТест(ТаблицаТестов, "ВК_СоздатьСоставнойПост" , "Создать/Удалить составной пост" , ВКонтакте);
НовыйТест(ТаблицаТестов, "ВК_СоздатьОпрос" , "Создать опрос" , ВКонтакте);
НовыйТест(ТаблицаТестов, "ВК_СохранитьУдалитьКартинку" , "Добавить/Удалить картинку" , ВКонтакте);
НовыйТест(ТаблицаТестов, "ВК_СоздатьИсторию" , "Создать историю" , ВКонтакте);