diff --git a/OInt/core/Modules/OPI_GoogleDrive.os b/OInt/core/Modules/OPI_GoogleDrive.os index 19ef95bb52..7fc2c05d54 100644 --- a/OInt/core/Modules/OPI_GoogleDrive.os +++ b/OInt/core/Modules/OPI_GoogleDrive.os @@ -129,6 +129,27 @@ Возврат УправлениеФайлом(Токен, Файл, Описание); КонецФункции +// Создать папку. +// +// Параметры: +// Токен - Строка - Токен +// Имя - Строка - Имя папки +// Родитель - Строка - Родитель +// +// Возвращаемое значение: +// HTTPОтвет - Ответ сервера Google +Функция СоздатьПапку(Знач Токен, Знач Имя, Знач Родитель = "") Экспорт + + Описание = Новый Соответствие; + Описание.Вставить("MIME" , "application/vnd.google-apps.folder"); + Описание.Вставить("Имя" , Имя); + Описание.Вставить("Описание", ""); + Описание.Вставить("Родитель", ?(ЗначениеЗаполнено(Родитель), Родитель, "root")); + + Возврат УправлениеФайлом(Токен, , Описание); + +КонецФункции + // Скачать файл. // // Параметры: @@ -151,24 +172,6 @@ КонецФункции -// Удалить объект. -// -// Параметры: -// Токен - Строка - Токен -// Идентификатор - Строка - Идентификатор объекта для удаления -// -// Возвращаемое значение: -// HTTPОтвет - Ответ сервера Google -Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт - - Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); - URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор; - Ответ = OPI_Инструменты.Delete(URL, , Заголовки); - - Возврат Ответ; - -КонецФункции - // Скоприровать объект. // // Параметры: @@ -227,6 +230,24 @@ КонецФункции +// Удалить объект. +// +// Параметры: +// Токен - Строка - Токен +// Идентификатор - Строка - Идентификатор объекта для удаления +// +// Возвращаемое значение: +// HTTPОтвет - Ответ сервера Google +Функция УдалитьОбъект(Знач Токен, Знач Идентификатор) Экспорт + + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор; + Ответ = OPI_Инструменты.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + // Получить описание файла. // // Возвращаемое значение: @@ -237,7 +258,7 @@ Описание.Вставить("MIME" , "image/jpeg"); Описание.Вставить("Имя" , "Новый файл.jpg"); Описание.Вставить("Описание" , "Это новый файл"); - Описание.Вставить("Родитель" , Неопределено); + Описание.Вставить("Родитель" , "root"); Возврат Описание; @@ -270,6 +291,71 @@ КонецФункции +// Получить комментарий. +// +// Параметры: +// Токен - Строка - Токен +// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария +// ИДКомментария - Строка - Идентификатор комментария +// +// Возвращаемое значение: +// HTTPОтвет - Получить комментарий +Функция ПолучитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт + + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария; + + Параметры = Новый Структура; + Параметры.Вставить("fields", "*"); + + Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Получить список комментариев. +// +// Параметры: +// Токен - Строка - Токен +// ИДОбъекта - Строка - Идентификатор объекта +// +// Возвращаемое значение: +// HTTPОтвет - Получить список комментариев +Функция ПолучитьСписокКомментариев(Знач Токен, Знач ИДОбъекта) Экспорт + + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments"; + + Параметры = Новый Структура; + Параметры.Вставить("fields", "*"); + + Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки); + + Возврат Ответ; + +КонецФункции + +// Удалить комментарий. +// +// Параметры: +// Токен - Строка - Токен +// ИДОбъекта - Строка - Идентификатор файла или каталога размещения комментария +// ИДКомментария - Строка - Идентификатор комментария +// +// Возвращаемое значение: +// HTTPОтвет - Удалить комментарий +Функция УдалитьКомментарий(Знач Токен, Знач ИДОбъекта, Знач ИДКомментария) Экспорт + + Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); + URL = "https://www.googleapis.com/drive/v3/files/" + ИДОбъекта + "/comments/" + ИДКомментария; + + Ответ = OPI_Инструменты.Delete(URL, , Заголовки); + + Возврат Ответ; + +КонецФункции + #КонецОбласти #КонецОбласти @@ -361,9 +447,10 @@ КонецПроцедуры -Функция УправлениеФайлом(Знач Токен, Знач Файл, Знач Описание = "", Знач Идентификатор = "") +Функция УправлениеФайлом(Знач Токен, Знач Файл = "", Знач Описание = "", Знач Идентификатор = "") - MimeType = "mimeType"; + СоответствиеФайла = Новый Соответствие; + MimeType = "mimeType"; Если ЗначениеЗаполнено(Идентификатор) Тогда MIME = ПолучитьИнформациюОбОбъекте(Токен, Идентификатор)[MimeType]; @@ -378,12 +465,15 @@ Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен); URL = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"; - Если ТипЗнч(Файл) <> Тип("ДвоичныеДанные") Тогда - Файл = Новый ДвоичныеДанные(Файл); + Если ЗначениеЗаполнено(Файл) Тогда + + Если ТипЗнч(Файл) <> Тип("ДвоичныеДанные") Тогда + Файл = Новый ДвоичныеДанные(Файл); + КонецЕсли; + + СоответствиеФайла.Вставить(Файл, MIME); + КонецЕсли; - - СоответствиеФайла = Новый Соответствие; - СоответствиеФайла.Вставить(Файл, MIME); СформироватьПараметрыЗагрузкиФайла(Описание); Описание = OPI_Инструменты.JSONСтрокой(Описание); diff --git a/OInt/tests/Modules/internal/OPI_Тесты.os b/OInt/tests/Modules/internal/OPI_Тесты.os index 5844982782..2fc10cfd87 100644 --- a/OInt/tests/Modules/internal/OPI_Тесты.os +++ b/OInt/tests/Modules/internal/OPI_Тесты.os @@ -2347,23 +2347,84 @@ КонецПроцедуры Процедура ГД_СоздатьУдалитьКомментарий() Экспорт - - Id_ = "id"; - Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token"); - Каталог = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GD_Каталог"); - Картинка = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Картинка"); - Описание = OPI_GoogleDrive.ПолучитьОписаниеФайла(); + Kind = "kind"; + Content = "content"; + Id_ = "id"; + Comments = "comments"; + Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token"); + Каталог = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GD_Каталог"); + Картинка = OPI_ПолучениеДанныхТестов.ПолучитьДвоичные("Картинка"); + + Описание = OPI_GoogleDrive.ПолучитьОписаниеФайла(); Описание.Вставить("Родитель", Каталог); Результат = OPI_GoogleDrive.ЗагрузитьФайл(Токен, Картинка, Описание); Идентификатор = Результат[Id_]; - Комментарий = "Новый комментарий"; - Результат = OPI_GoogleDrive.СоздатьКомментарий(Токен, Идентификатор, Комментарий); + Комментарий = "Новый комментарий"; + МассивРезультатов = Новый Массив; + Результат = OPI_GoogleDrive.СоздатьКомментарий(Токен, Идентификатор, Комментарий); - Результат = OPI_GoogleDrive.УдалитьОбъект(Токен, Идентификатор); + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКомментарий"); + ИДКомментария = Результат[Id_]; + + МассивРезультатов.Добавить(Результат); + + Результат = OPI_GoogleDrive.ПолучитьКомментарий(Токен, Идентификатор, ИДКомментария); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьКомментарий"); + + МассивРезультатов.Добавить(Результат); + + Результат = OPI_GoogleDrive.ПолучитьСписокКомментариев(Токен, Идентификатор); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокКомментариев"); + + Комментарии = Результат[Comments]; + ОбъектКомментарий = Комментарии[Комментарии.ВГраница()]; + + МассивРезультатов.Добавить(ОбъектКомментарий); + + Для Каждого Результат Из МассивРезультатов Цикл + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[Content]).Равно(Комментарий); + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[Kind]).Равно("drive#comment"); + КонецЦикла; + + + Результат = OPI_GoogleDrive.УдалитьКомментарий(Токен, Идентификатор, ИДКомментария); + + OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКомментарий"); + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(ЗначениеЗаполнено(Результат)).Равно(Ложь); + + OPI_GoogleDrive.УдалитьОбъект(Токен, Идентификатор); + +КонецПроцедуры + +Процедура ГД_СоздатьКаталог() Экспорт + + Name = "name"; + Имя = "Тестовая папка"; + Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token"); + Каталог = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GD_Каталог"); + + МассивРезультатов = Новый Массив; + + МассивРезультатов.Добавить(OPI_GoogleDrive.СоздатьПапку(Токен, Имя)); + МассивРезультатов.Добавить(OPI_GoogleDrive.СоздатьПапку(Токен, Имя, Каталог)); + + Для Каждого Результат Из МассивРезультатов Цикл + + ИДКаталога = Результат["id"]; + + OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат[Name]).Равно(Имя); + + OPI_GoogleDrive.УдалитьОбъект(Токен, ИДКаталога); + + КонецЦикла; + КонецПроцедуры #КонецОбласти diff --git a/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os b/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os index e81342c384..fba231c582 100644 --- a/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os +++ b/OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os @@ -296,6 +296,7 @@ НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв); НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв); НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв); + НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв); НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);