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

Методы Drive и дефекты SC

This commit is contained in:
Anton 2024-03-14 22:18:21 +03:00
parent d7b75eec78
commit 60a4ffd66f
14 changed files with 189 additions and 57 deletions

View File

@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"

View File

@ -22,12 +22,15 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область РаботаСФайлами
#Область РаботаСФайламиИКаталогами
// Получить информацию об объекте.
//
@ -40,8 +43,12 @@
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
Параметры = Новый Структура;
Параметры.Вставить("fields", "*");
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
@ -118,25 +125,8 @@
//
// Возвращаемое значение:
// HTTPОтвет - Ответ сервера Google
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
MIME = Описание["MIME"];
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
Если ТипЗнч(Файл) <> Тип("ДвоичныеДанные") Тогда
Файл = Новый ДвоичныеДанные(Файл);
КонецЕсли;
СоответствиеФайла = Новый Соответствие;
СоответствиеФайла.Вставить(Файл, MIME);
СформироватьПараметрыЗагрузкиФайла(Описание);
Ответ = OPI_Инструменты.PostMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
Возврат Ответ;
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
Возврат УправлениеФайлом(Токен, Файл, Описание);
КонецФункции
// Скачать файл.
@ -214,6 +204,29 @@
КонецФункции
// Обновить файл.
//
// Параметры:
// Токен - Строка - Токен
// Идентификатор - Строка - Идентификатор обновляемого объекта
// Файл - ДвоичныеДанные,Строка - Файл или путь к файлу
// НовоеИмя - Строка - Новое имя файла (если необходимо)
//
// Возвращаемое значение:
// HTTPОтвет - Ответ сервера Google
Функция ОбновитьФайл(Знач Токен, Знач Идентификатор, Знач Файл, Знач НовоеИмя = "") Экспорт
Если ЗначениеЗаполнено(НовоеИмя) Тогда
Описание = Новый Соответствие;
Описание.Вставить("Имя", НовоеИмя);
Иначе
Описание = "";
КонецЕсли;
Возврат УправлениеФайлом(Токен, Файл, Описание, Идентификатор);
КонецФункции
// Получить описание файла.
//
// Возвращаемое значение:
@ -232,6 +245,24 @@
#КонецОбласти
#Область РаботаСКомментариями
Функция СоздатьКомментарий(Знач Токен, Знач Идентификатор, Знач Комментарий) Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/comments?fields=*";
Параметры = Новый Структура;
Параметры.Вставить("content", Комментарий);
Ответ = OPI_Инструменты.POST(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -317,8 +348,44 @@
КонецЦикла;
Описание = OPI_Инструменты.JSONСтрокой(СформированноеОписание);
Описание = СформированноеОписание;
КонецПроцедуры
Функция УправлениеФайлом(Знач Токен, Знач Файл, Знач Описание = "", Знач Идентификатор = "")
Если ЗначениеЗаполнено(Идентификатор) Тогда
MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)["mimeType"];
Иначе
MIME = Описание["MIME"];
КонецЕсли;
Если Не ЗначениеЗаполнено(Описание) Тогда
Описание = Новый Соответствие;
КонецЕсли;
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
Если ТипЗнч(Файл) <> Тип("ДвоичныеДанные") Тогда
Файл = Новый ДвоичныеДанные(Файл);
КонецЕсли;
СоответствиеФайла = Новый Соответствие;
СоответствиеФайла.Вставить(Файл, MIME);
СформироватьПараметрыЗагрузкиФайла(Описание);
Описание = OPI_Инструменты.JSONСтрокой(Описание);
Если ЗначениеЗаполнено(Идентификатор) Тогда
URL = СтрЗаменить(URL, "/files", "/files/" + Идентификатор);
Ответ = OPI_Инструменты.PatchMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
Иначе
Ответ = OPI_Инструменты.PostMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
КонецЕсли;
Возврат Ответ;
КонецФункции
#КонецОбласти

View File

@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -23,6 +23,8 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"
@ -227,7 +229,6 @@
//
// Возвращаемое значение:
// Произвольный, HTTPОтвет - Ответ сервера Telegram
// BSLLS:Typo-off
Функция ОтправитьМедиагруппу(Знач Токен, Знач IDЧата, Знач Текст, Знач СоответствиеФайлов, Знач Клавиатура = "") Экспорт
// СоответствиеФайлов
@ -1076,5 +1077,3 @@
КонецПроцедуры
#КонецОбласти
// BSLLS:Typo-on

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -25,6 +25,8 @@
// и почитать комментарии
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"
@ -487,8 +489,6 @@
КонецФункции
// BSLLS:LatinAndCyrillicSymbolInWord-off
Функция СоздатьЗаголовокАвторизацииV1(Знач Параметры, Знач Поля, Знач ВидЗапроса, Знач URL)
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
@ -601,8 +601,4 @@
КонецФункции
// BSLLS:LatinAndCyrillicSymbolInWord-on
#КонецОбласти
// BSLLS:Typo-on

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -25,6 +25,8 @@
// и почитать комментарии
// BSLLS:NumberOfOptionalParams-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"
@ -1408,8 +1410,6 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// BSLLS:MissingReturnedValueDescription-off
// BSLLS:MissingParameterDescription-off
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
@ -1571,6 +1571,7 @@
КонецФункции
//@skip-check method-too-many-params
Функция УправлениеПодборкой(Знач Название
, Знач Картинка = ""
, Знач ИДПодборки = ""
@ -1795,8 +1796,4 @@
КонецПроцедуры
// BSLLS:MissingParameterDescription-on
// BSLLS:MissingReturnedValueDescription-on
#КонецОбласти
// BSLLS:NumberOfOptionalParams-on

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../tools"

View File

@ -21,8 +21,10 @@
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
#Область СлужебныйПрограммныйИнтерфейс
@ -78,10 +80,14 @@
КонецФункции
Функция PostMultipartRelated(Знач URL, Знач JSON, Знач Файлы, Знач ДопЗаголовки) Экспорт
Функция PostMultipartRelated(Знач URL, Знач JSON = "", Знач Файлы = "", Знач ДопЗаголовки = "") Экспорт
Возврат ВыполнитьЗапросМультипартРелэйтед(URL, "POST", JSON, Файлы, ДопЗаголовки);
КонецФункции
Функция PatchMultipartRelated(Знач URL, Знач JSON = "", Знач Файлы = "", Знач ДопЗаголовки = "") Экспорт
Возврат ВыполнитьЗапросМультипартРелэйтед(URL, "PATCH", JSON, Файлы, ДопЗаголовки);
КонецФункции
#КонецОбласти
Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт
@ -369,7 +375,7 @@
КонецФункции
Функция ВыполнитьЗапросМультипартРелэйтед(URL, Вид, JSON, Файлы, ДопЗаголовки)
Функция ВыполнитьЗапросМультипартРелэйтед(URL, Вид, JSON = "", Файлы = "", ДопЗаголовки = "")
Переадресация = 300;
Ошибка = 400;
@ -567,6 +573,10 @@
Процедура ЗаписатьФайлыРелэйтед(ЗаписьТекста, Знач Boundary, Знач Файлы)
Если Не ЗначениеЗаполнено(Файлы) Тогда
Возврат;
КонецЕсли;
РазделительСтрок = Символы.ВК + Символы.ПС;
Для Каждого Файл Из Файлы Цикл
@ -585,6 +595,10 @@
Процедура ЗаписатьJSONМультипарт(ЗаписьТекста, Знач Boundary, Знач JSON)
Если Не ЗначениеЗаполнено(JSON) Тогда
Возврат;
КонецЕсли;
РазделительСтрок = Символы.ВК + Символы.ПС;
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
@ -836,9 +850,6 @@
КонецФункции
// BSLLS:LatinAndCyrillicSymbolInWord-on
// BSLLS:Typo-on
#КонецОбласти
#КонецОбласти

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
#Область СлужебныйПрограммныйИнтерфейс
#Область БСП
@ -92,7 +95,7 @@
Части = Новый Массив(Количество);
// BSLLS:UnusedLocalVariable-off
Для к = 1 По Количество Цикл
Для К = 1 По Количество Цикл
Части.Добавить(Строка);
КонецЦикла;
// BSLLS:UnusedLocalVariable-on

View File

@ -22,6 +22,9 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "./internal"
// #Использовать asserts
@ -256,6 +259,7 @@
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв);
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
@ -314,5 +318,3 @@
КонецПроцедуры
#КонецОбласти
// BSLLS:Typo-on

View File

@ -23,8 +23,11 @@
// https://github.com/Bayselonarrend/OpenIntegrations
// Набор тестов для YAxUnit
// @skip-check undefined-variable
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// Раскомментировать, если выполняется OneScript
// #Использовать "../../../tools"
@ -1773,6 +1776,7 @@
МассивУдаляемых = Новый Массив;
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Картинка = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Картинка");
КартинкаЗамены = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Картинка2");
Каталог = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GD_Каталог");
Описание = OPI_GoogleDrive.ПолучитьОписаниеФайла();
@ -1796,7 +1800,24 @@
МассивУдаляемых.Добавить(Результат[Id_]);
Результат = OPI_GoogleDrive.СкачатьФайл(Токен, Идентификатор);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("ДвоичныеДанные");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Размер()).Равно(Картинка.Размер() + 2);
OPI_Инструменты.Пауза(5);
НовоеИмя = "Обновленный";
Результат = OPI_GoogleDrive.ОбновитьФайл(Токен, Идентификатор, КартинкаЗамены, НовоеИмя);
OPI_Инструменты.Пауза(5);
Комментарий = "Yo";
Результат = OPI_GoogleDrive.СоздатьКомментарий(Токен, Идентификатор, Комментарий);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[MimeType]).Равно(Описание["MIME"]);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[Name]).Равно(НовоеИмя);
Результат = OPI_GoogleDrive.СкачатьФайл(Токен, Идентификатор);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат.Размер()).Равно(КартинкаЗамены.Размер() + 2);
OPI_Инструменты.Пауза(5);
Для Каждого Удаляемый Из МассивУдаляемых Цикл
Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый);
@ -1808,6 +1829,26 @@
КонецПроцедуры
Процедура ГД_СоздатьУдалитьКомментарий() Экспорт
Id_ = "id";
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Каталог = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GD_Каталог");
Картинка = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Картинка");
Описание = OPI_GoogleDrive.ПолучитьОписаниеФайла();
Описание.Вставить("Родитель", Каталог);
Результат = OPI_GoogleDrive.ЗагрузитьФайл(Токен, Картинка, Описание);
Идентификатор = Результат[Id_];
Комментарий = "Новый комментарий";
Результат = OPI_GoogleDrive.СоздатьКомментарий(Токен, Идентификатор, Комментарий);
Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Идентификатор);
КонецПроцедуры
#КонецОбласти
#Область Twitter
@ -2211,5 +2252,3 @@
#КонецОбласти
#КонецОбласти
// BSLLS:Typo-on