You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-13 20:05:19 +02:00
Google Drive: загрузка, скачивание, копирование файлов
This commit is contained in:
@@ -29,6 +29,33 @@
|
|||||||
|
|
||||||
#Область РаботаСФайлами
|
#Область РаботаСФайлами
|
||||||
|
|
||||||
|
// Получить информацию об объекте.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Идентификатор - Строка - Идентификатор файла/каталога
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// HTTPОтвет - Ответ сервера Google
|
||||||
|
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить список каталогов.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// ИмяСодержит - Строка - Отбор по имени
|
||||||
|
// Подробно - Булево - Добавляет список файлов к полям каталога
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - Массив соответствий каталогов
|
||||||
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
|
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
@@ -51,6 +78,15 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить список файлов.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// ИмяСодержит - Строка - Отбор по имени
|
||||||
|
// Каталог - Строка - Отбор по ID каталога-родителя
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - Массив соответствий файорв
|
||||||
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
|
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
@@ -73,16 +109,127 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
|
// Загрузить файл.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Файл - ДвоичныеДанные,Строка - Файл или путь к файлу
|
||||||
|
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// HTTPОтвет - Ответ сервера Google
|
||||||
|
Функция ЗагрузитьФайл(Знач Токен, Знач Файл, Знач Описание) Экспорт
|
||||||
|
|
||||||
|
MIME = Описание["MIME"];
|
||||||
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart";
|
||||||
|
|
||||||
|
Если ТипЗнч(Файл) <> Тип("ДвоичныеДанные") Тогда
|
||||||
|
Файл = Новый ДвоичныеДанные(Файл);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
СоответствиеФайла = Новый Соответствие;
|
||||||
|
СоответствиеФайла.Вставить(Файл, MIME);
|
||||||
|
|
||||||
|
СформироватьПараметрыЗагрузкиФайла(Описание);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.PostMultipartRelated(URL, Описание, СоответствиеФайла, Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Скачать файл.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Идентификатор - Строка - Идентификатор файла
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// HTTPОтвет - Ответ сервера Google
|
||||||
|
Функция СкачатьФайл(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
|
||||||
|
Параметры = Новый Соответствие;
|
||||||
|
Параметры.Вставить("alt", "media");
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get(URL, Параметры , Заголовки);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Удалить объект.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Идентификатор - Строка - Идентификатор объекта для удаления
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// HTTPОтвет - Ответ сервера Google
|
||||||
|
Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт
|
||||||
|
|
||||||
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
|
||||||
|
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Скоприровать объект.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// Идентификатор - Строка - Идентификатор объекта
|
||||||
|
// НовоеИмя - Строка - Новое имя объекта
|
||||||
|
// НовыйРодитель - Строка - Новый каталог размещения
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// HTTPОтвет - Ответ сервера Google
|
||||||
|
Функция СкоприроватьОбъект(Знач Токен, Знач Идентификатор, Знач НовоеИмя = "", Знач НовыйРодитель = "") Экспорт
|
||||||
|
|
||||||
|
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
|
||||||
|
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор + "/copy";
|
||||||
|
|
||||||
|
Параметры = Новый Структура;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(НовоеИмя) Тогда
|
||||||
|
Параметры.Вставить("name", НовоеИмя);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(НовыйРодитель) Тогда
|
||||||
|
|
||||||
|
МассивРодителей = Новый Массив;
|
||||||
|
МассивРодителей.Добавить(НовыйРодитель);
|
||||||
|
Параметры.Вставить("parents", МассивРодителей);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Параметры , Заголовки, Истина);
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
// Получить описание файла.
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Соответствие Из КлючИЗначение - Получить описание файла
|
||||||
|
Функция ПолучитьОписаниеФайла() Экспорт
|
||||||
|
|
||||||
|
Описание = Новый Соответствие;
|
||||||
|
Описание.Вставить("MIME" , "image/jpeg");
|
||||||
|
Описание.Вставить("Имя" , "Новый файл.jpg");
|
||||||
|
Описание.Вставить("Описание" , "Это новый файл");
|
||||||
|
Описание.Вставить("Родитель" , Неопределено);
|
||||||
|
|
||||||
|
Возврат Описание;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -95,6 +242,7 @@
|
|||||||
Files = "files";
|
Files = "files";
|
||||||
NPT = "nextPageToken";
|
NPT = "nextPageToken";
|
||||||
Параметры = Новый Структура;
|
Параметры = Новый Структура;
|
||||||
|
Параметры.Вставить("fields", "*");
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(Страница) Тогда
|
Если ЗначениеЗаполнено(Страница) Тогда
|
||||||
Параметры.Вставить("pageToken", Страница);
|
Параметры.Вставить("pageToken", Страница);
|
||||||
@@ -139,4 +287,38 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура СформироватьПараметрыЗагрузкиФайла(Описание)
|
||||||
|
|
||||||
|
СформированноеОписание = Новый Соответствие;
|
||||||
|
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Описание);
|
||||||
|
|
||||||
|
СоотвтетствиеПолей = Новый Соответствие;
|
||||||
|
СоотвтетствиеПолей.Вставить("MIME" , "mimeType");
|
||||||
|
СоотвтетствиеПолей.Вставить("Имя" , "name");
|
||||||
|
СоотвтетствиеПолей.Вставить("Описание" , "description");
|
||||||
|
СоотвтетствиеПолей.Вставить("Родитель" , "parents");
|
||||||
|
СоотвтетствиеПолей.Вставить("Расширение", "fileExtension");
|
||||||
|
|
||||||
|
Для Каждого Элемент Из Описание Цикл
|
||||||
|
|
||||||
|
Если Элемент.Ключ = "Родитель" Тогда
|
||||||
|
|
||||||
|
ТекущееЗначение = Новый Массив;
|
||||||
|
ТекущееЗначение.Добавить(Элемент.Значение);
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ТекущееЗначение = Элемент.Значение;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИмяПоля = СоотвтетствиеПолей.Получить(Элемент.Ключ);
|
||||||
|
СформированноеОписание.Вставить(ИмяПоля, ТекущееЗначение);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Описание = OPI_Инструменты.JSONСтрокой(СформированноеОписание);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@@ -6,4 +6,6 @@
|
|||||||
<value>OPI google drive</value>
|
<value>OPI google drive</value>
|
||||||
</synonym>
|
</synonym>
|
||||||
<server>true</server>
|
<server>true</server>
|
||||||
|
<externalConnection>true</externalConnection>
|
||||||
|
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||||
</mdclass:CommonModule>
|
</mdclass:CommonModule>
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// MIT License
|
// MIT License
|
||||||
|
|
||||||
// Copyright (c) 2023 Anton Tsitavets
|
// Copyright (c) 2023 Anton Tsitavets
|
||||||
|
|
||||||
@@ -78,6 +78,10 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция PostMultipartRelated(Знач URL, Знач JSON, Знач Файлы, Знач ДопЗаголовки) Экспорт
|
||||||
|
Возврат ВыполнитьЗапросМультипартРелэйтед(URL, "POST", JSON, Файлы, ДопЗаголовки);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт
|
Функция ПараметрыЗапросаВСоответствие(Знач СтрокаПараметров) Экспорт
|
||||||
@@ -365,6 +369,44 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ВыполнитьЗапросМультипартРелэйтед(URL, Вид, JSON, Файлы, ДопЗаголовки)
|
||||||
|
|
||||||
|
Переадресация = 300;
|
||||||
|
Ошибка = 400;
|
||||||
|
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
|
||||||
|
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||||
|
ТипДанных = "multipart/related; boundary=" + Boundary;
|
||||||
|
СтруктураURL = РазбитьURL(URL);
|
||||||
|
Сервер = СтруктураURL["Сервер"];
|
||||||
|
Адрес = СтруктураURL["Адрес"];
|
||||||
|
|
||||||
|
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, ТипДанных);
|
||||||
|
Соединение = СоздатьСоединение(Сервер);
|
||||||
|
|
||||||
|
ТелоЗапроса = Запрос.ПолучитьТелоКакПоток();
|
||||||
|
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", "", Ложь);
|
||||||
|
|
||||||
|
ЗаписатьJSONМультипарт(ЗаписьТекста, Boundary, JSON);
|
||||||
|
ЗаписатьФайлыРелэйтед(ЗаписьТекста, Boundary, Файлы);
|
||||||
|
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + "--" + РазделительСтрок);
|
||||||
|
ЗаписьТекста.Закрыть();
|
||||||
|
|
||||||
|
ДобавитьContentLength(Запрос);
|
||||||
|
|
||||||
|
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||||
|
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||||
|
|
||||||
|
Если ЭтоПереадресация Тогда
|
||||||
|
Ответ = ВыполнитьЗапросМультипартРелэйтед(Ответ.Заголовки["Location"], "POST", JSON, Файлы, ДопЗаголовки);
|
||||||
|
Иначе
|
||||||
|
ОбработатьОтвет(Ответ);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьЗапрос(Знач Адрес, Знач ДопЗаголовки = "", Знач ТипДанных = "")
|
Функция СоздатьЗапрос(Знач Адрес, Знач ДопЗаголовки = "", Знач ТипДанных = "")
|
||||||
|
|
||||||
Заголовки = Новый Соответствие;
|
Заголовки = Новый Соответствие;
|
||||||
@@ -523,6 +565,51 @@
|
|||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ЗаписатьФайлыРелэйтед(ЗаписьТекста, Знач Boundary, Знач Файлы)
|
||||||
|
|
||||||
|
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||||
|
|
||||||
|
Для Каждого Файл Из Файлы Цикл
|
||||||
|
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку("Content-Type: " + Файл.Значение);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
ЗаписьТекста.Записать(Файл.Ключ);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ЗаписатьJSONМультипарт(ЗаписьТекста, Знач Boundary, Знач JSON)
|
||||||
|
|
||||||
|
РазделительСтрок = Символы.ВК + Символы.ПС;
|
||||||
|
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку("--" + boundary + РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку("Content-Type: application/json; charset=UTF-8");
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(JSON);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
ЗаписьТекста.ЗаписатьСтроку(РазделительСтрок);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ДобавитьContentLength(Запрос)
|
||||||
|
|
||||||
|
ТелоЗапроса = Запрос.ПолучитьТелоКакДвоичныеДанные();
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ТелоЗапроса) Тогда
|
||||||
|
|
||||||
|
Размер = ТелоЗапроса.Размер();
|
||||||
|
Запрос.Заголовки.Вставить("Content-Length", ЧислоВСтроку(Размер));
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура УдалитьПустыеКлючиЗначения(Знач Коллекция, ВыходнаяКоллекция)
|
Процедура УдалитьПустыеКлючиЗначения(Знач Коллекция, ВыходнаяКоллекция)
|
||||||
|
|
||||||
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
Для Каждого ЭлементКоллекции Из Коллекция Цикл
|
||||||
|
@@ -163,12 +163,12 @@
|
|||||||
МассивРазделов = Новый Массив;
|
МассивРазделов = Новый Массив;
|
||||||
МассивРазделов.Добавить("Телеграм");
|
МассивРазделов.Добавить("Телеграм");
|
||||||
МассивРазделов.Добавить("ВКонтакте");
|
МассивРазделов.Добавить("ВКонтакте");
|
||||||
МассивРазделов.Добавить("Яндекс.Диск");
|
|
||||||
МассивРазделов.Добавить("Google Calendar");
|
|
||||||
МассивРазделов.Добавить("Twitter");
|
|
||||||
МассивРазделов.Добавить("Viber");
|
МассивРазделов.Добавить("Viber");
|
||||||
МассивРазделов.Добавить("Google Drive");
|
МассивРазделов.Добавить("Twitter");
|
||||||
|
МассивРазделов.Добавить("Яндекс.Диск");
|
||||||
МассивРазделов.Добавить("Google Workspace");
|
МассивРазделов.Добавить("Google Workspace");
|
||||||
|
МассивРазделов.Добавить("Google Calendar");
|
||||||
|
МассивРазделов.Добавить("Google Drive");
|
||||||
|
|
||||||
Возврат МассивРазделов;
|
Возврат МассивРазделов;
|
||||||
|
|
||||||
@@ -255,6 +255,7 @@
|
|||||||
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
|
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
|
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
|
||||||
|
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
|
||||||
|
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
|
||||||
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
|
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
|
||||||
|
@@ -892,7 +892,7 @@
|
|||||||
Результат = OPI_VK.ПолучитьСтатистикуПостов(МассивПостов, Параметры);
|
Результат = OPI_VK.ПолучитьСтатистикуПостов(МассивПостов, Параметры);
|
||||||
OPI_Инструменты.Пауза(5);
|
OPI_Инструменты.Пауза(5);
|
||||||
|
|
||||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат) .ИмеетТип("Массив").ИмеетДлину(2);
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Массив").ИмеетДлину(2);
|
||||||
|
|
||||||
OPI_Инструменты.Пауза(5);
|
OPI_Инструменты.Пауза(5);
|
||||||
|
|
||||||
@@ -1740,8 +1740,72 @@
|
|||||||
|
|
||||||
Процедура ГД_ПолучитьСписокКаталогов() Экспорт
|
Процедура ГД_ПолучитьСписокКаталогов() Экспорт
|
||||||
|
|
||||||
|
MimeType = "mimeType";
|
||||||
|
Name = "name";
|
||||||
|
Имя = "ОПИ";
|
||||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
|
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
|
||||||
Результат = OPI_GoogleDrive.ПолучитьСписокКаталогов(Токен, "ОПИ", Истина);
|
Результат = OPI_GoogleDrive.ПолучитьСписокКаталогов(Токен, Имя, Истина);
|
||||||
|
Каталог = Результат[0];
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Каталог["files"]).ИмеетТип("Массив");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Каталог[MimeType]).Равно("application/vnd.google-apps.folder");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Каталог[Name]).Равно(Имя);
|
||||||
|
|
||||||
|
OPI_Инструменты.Пауза(5);
|
||||||
|
Идентификатор = Каталог["id"];
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GD_Каталог", Идентификатор);
|
||||||
|
|
||||||
|
Каталог = OPI_GoogleDrive.ПолучитьИнформациюОбОбъекте(Токен, Идентификатор);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Каталог[MimeType]).Равно("application/vnd.google-apps.folder");
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Каталог[Name]).Равно(Имя);
|
||||||
|
|
||||||
|
OPI_Инструменты.Пауза(5);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура ГД_ЗагрузитьУдалитьФайл() Экспорт
|
||||||
|
|
||||||
|
MimeType = "mimeType";
|
||||||
|
Name = "name";
|
||||||
|
Id_ = "id";
|
||||||
|
|
||||||
|
МассивУдаляемых = Новый Массив;
|
||||||
|
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
|
||||||
|
Картинка = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Картинка");
|
||||||
|
Каталог = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GD_Каталог");
|
||||||
|
|
||||||
|
Описание = OPI_GoogleDrive.ПолучитьОписаниеФайла();
|
||||||
|
Описание.Вставить("Родитель", Каталог);
|
||||||
|
|
||||||
|
Результат = OPI_GoogleDrive.ЗагрузитьФайл(Токен, Картинка, Описание);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[MimeType]).Равно(Описание["MIME"]);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[Name]).Равно(Описание["Имя"]);
|
||||||
|
|
||||||
|
Идентификатор = Результат[Id_];
|
||||||
|
МассивУдаляемых.Добавить(Идентификатор);
|
||||||
|
|
||||||
|
НовоеИмя = "Скопированный файл.jpeg";
|
||||||
|
Результат = OPI_GoogleDrive.СкоприроватьОбъект(Токен, Идентификатор, НовоеИмя, "root");
|
||||||
|
OPI_Инструменты.Пауза(5);
|
||||||
|
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[MimeType]).Равно(Описание["MIME"]);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[Name]).Равно(НовоеИмя);
|
||||||
|
|
||||||
|
МассивУдаляемых.Добавить(Результат[Id_]);
|
||||||
|
|
||||||
|
Результат = OPI_GoogleDrive.СкачатьФайл(Токен, Идентификатор);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("ДвоичныеДанные");
|
||||||
|
|
||||||
|
Для Каждого Удаляемый Из МассивУдаляемых Цикл
|
||||||
|
Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Удаляемый);
|
||||||
|
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).Равно("");
|
||||||
|
OPI_Инструменты.Пауза(2);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
OPI_Инструменты.Пауза(5);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user