1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-05-13 22:16:54 +02:00

Apply automatic changes

This commit is contained in:
Bayselonarrend 2024-03-14 11:54:45 +00:00 committed by github-actions[bot]
parent 23f7de96d1
commit c35c84c5d1
14 changed files with 9780 additions and 9273 deletions

View File

@ -39,7 +39,7 @@
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт Функция СоздатьКалендарь(Знач Токен, Знач Наименование) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars"; URL = "https://www.googleapis.com/calendar/v3/calendars";
Параметры = Новый Структура; Параметры = Новый Структура;
@ -62,7 +62,7 @@
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт Функция ПолучитьМетаданныеКалендаря(Знач Токен, Знач Календарь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
Ответ = OPI_Инструменты.Get(URL, , Заголовки); Ответ = OPI_Инструменты.Get(URL, , Заголовки);
@ -85,7 +85,7 @@
, Знач Наименование = "" , Знач Наименование = ""
, Знач Описание = "") Экспорт , Знач Описание = "") Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
Параметры = Новый Структура; Параметры = Новый Структура;
@ -113,7 +113,7 @@
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт Функция ОчиститьОсновнойКалендарь(Знач Токен) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear"; URL = "https://www.googleapis.com/calendar/v3/calendars/primary/clear";
Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь); Ответ = OPI_Инструменты.Post(URL, , Заголовки, Ложь);
@ -131,7 +131,7 @@
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт Функция УдалитьКалендарь(Знач Токен, Знач Календарь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь; URL = "https://www.googleapis.com/calendar/v3/calendars/" + Календарь;
Ответ = OPI_Инструменты.Delete(URL, , Заголовки); Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
@ -152,7 +152,7 @@
// Соответствие Из КлючИЗначение - Массив соответствий данных календарей // Соответствие Из КлючИЗначение - Массив соответствий данных календарей
Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт Функция ПолучитьСписокКалендарей(Знач Токен) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
МассивКалендарей = Новый Массив; МассивКалендарей = Новый Массив;
ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей); ПолучитьСписокКалендарейРекурсивно(Заголовки, МассивКалендарей);
@ -171,7 +171,7 @@
// Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google // Строка, Произвольный, ДвоичныеДанные, Неопределено, HTTPОтвет - ответ сервера Google
Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт Функция ДобавитьКалендарьВСписок(Знач Токен, Знач Календарь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList"; URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList";
Параметры = Новый Структура; Параметры = Новый Структура;
@ -193,7 +193,7 @@
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт Функция ПолучитьКалендарьСписка(Знач Токен, Знач Календарь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь; URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
Ответ = OPI_Инструменты.Get(URL, , Заголовки); Ответ = OPI_Инструменты.Get(URL, , Заголовки);
@ -211,7 +211,7 @@
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт Функция УдалитьКалендарьИзСписка(Знач Токен, Знач Календарь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь; URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь;
Ответ = OPI_Инструменты.Delete(URL, , Заголовки); Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
@ -236,7 +236,7 @@
, Знач ДополнительныйЦвет , Знач ДополнительныйЦвет
, Знач Скрытый = Ложь) Экспорт , Знач Скрытый = Ложь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true"; URL = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + Календарь + "?colorRgbFormat=true";
Параметры = Новый Соответствие; Параметры = Новый Соответствие;
@ -286,7 +286,7 @@
// Соответствие Из КлючИЗначение - Массив соответствий событий // Соответствие Из КлючИЗначение - Массив соответствий событий
Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт Функция ПолучитьСписокСобытий(Знач Токен, Знач Календарь) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
МассивСобытий = Новый Массив; МассивСобытий = Новый Массив;
ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий); ПолучитьСписокСобытийРекурсивно(Заголовки, Календарь, МассивСобытий);
@ -306,7 +306,7 @@
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт Функция ПолучитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/" URL = "https://www.googleapis.com/calendar/v3/calendars/"
+ Календарь + Календарь
+ "/events/" + "/events/"
@ -343,7 +343,7 @@
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт Функция ПереместитьСобытие(Знач Токен, Знач КалендарьИсточник, Знач КалендарьПриемник, Знач Событие) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/" URL = "https://www.googleapis.com/calendar/v3/calendars/"
+ КалендарьИсточник + КалендарьИсточник
+ "/events/" + "/events/"
@ -382,7 +382,7 @@
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google // Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - ответ сервера Google
Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт Функция УдалитьСобытие(Знач Токен, Знач Календарь, Знач Событие) Экспорт
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/calendar/v3/calendars/" URL = "https://www.googleapis.com/calendar/v3/calendars/"
+ Календарь + Календарь
+ "/events/" + "/events/"
@ -400,15 +400,6 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
Функция ПреобразоватьДату(Знач Дата) Функция ПреобразоватьДату(Знач Дата)
СтруктураДаты = Новый Структура; СтруктураДаты = Новый Структура;
@ -461,7 +452,7 @@
Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "") Функция УправлениеСобытием(Знач Токен, Знач Календарь, Знач ОписаниеСобытия, Знач Событие = "")
Заголовки = ПолучитьЗаголовокАвторизации(Токен); Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
Существующее = ЗначениеЗаполнено(Событие); Существующее = ЗначениеЗаполнено(Событие);
URL = "https://www.googleapis.com/calendar/v3/calendars/" URL = "https://www.googleapis.com/calendar/v3/calendars/"
+ Календарь + Календарь
@ -513,7 +504,7 @@
КонецЕсли; КонецЕсли;
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList" Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/users/me/calendarList"
, , Параметры
, Заголовки); , Заголовки);
Календари = Результат[Items]; Календари = Результат[Items];
@ -540,7 +531,7 @@
КонецЕсли; КонецЕсли;
Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events" Результат = OPI_Инструменты.Get("https://www.googleapis.com/calendar/v3/calendars/" + Календарь + "/events"
, , Параметры
, Заголовки); , Заголовки);
События = Результат[Items]; События = Результат[Items];

View File

@ -0,0 +1,324 @@
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// Раскомментировать, если выполняется OneScript
#Использовать "../../tools"
#Область ПрограммныйИнтерфейс
#Область РаботаСФайлами
// Получить информацию об объекте.
//
// Параметры:
// Токен - Строка - Токен
// Идентификатор - Строка - Идентификатор файла/каталога
//
// Возвращаемое значение:
// HTTPОтвет - Ответ сервера Google
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить список каталогов.
//
// Параметры:
// Токен - Строка - Токен
// ИмяСодержит - Строка - Отбор по имени
// Подробно - Булево - Добавляет список файлов к полям каталога
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Массив соответствий каталогов
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
МассивОбъектов = Новый Массив;
Отбор = Новый Массив;
Отбор.Добавить("mimeType = 'application/vnd.google-apps.folder'");
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
КонецЕсли;
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
Если Подробно Тогда
РазложитьОбъектыПодробно(Токен, МассивОбъектов);
КонецЕсли;
Возврат МассивОбъектов;
КонецФункции
// Получить список файлов.
//
// Параметры:
// Токен - Строка - Токен
// ИмяСодержит - Строка - Отбор по имени
// Каталог - Строка - Отбор по ID каталога-родителя
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Массив соответствий файорв
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
МассивОбъектов = Новый Массив;
Отбор = Новый Массив;
Отбор.Добавить("mimeType != 'application/vnd.google-apps.folder'");
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
КонецЕсли;
Если ЗначениеЗаполнено(Каталог) Тогда
Отбор.Добавить("'" + Каталог + "' in parents");
КонецЕсли;
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, , Отбор);
Возврат МассивОбъектов;
КонецФункции
// Загрузить файл.
//
// Параметры:
// Токен - Строка - Токен
// Файл - ДвоичныеДанные,Строка - Файл или путь к файлу
// Описание - Соответствие Из КлючИЗначение - См. ПолучитьОписаниеФайла
//
// Возвращаемое значение:
// 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.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
Параметры = Новый Соответствие;
Параметры.Вставить("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");
Описание.Вставить("Описание" , "Это новый файл");
Описание.Вставить("Родитель" , Неопределено);
Возврат Описание;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПолучитьСписокОбъектовРекурсивно(Знач Заголовки, МассивОбъектов, Подробно = Ложь, Отбор = "", Страница = "")
URL = "https://www.googleapis.com/drive/v3/files";
Files = "files";
NPT = "nextPageToken";
Параметры = Новый Структура;
Параметры.Вставить("fields", "*");
Если ЗначениеЗаполнено(Страница) Тогда
Параметры.Вставить("pageToken", Страница);
КонецЕсли;
Если ЗначениеЗаполнено(Отбор) И ТипЗнч(Отбор) = Тип("Массив") Тогда
ОтборСтрока = СтрСоединить(Отбор, " and ");
Параметры.Вставить("q", ОтборСтрока);
КонецЕсли;
Результат = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Объекты = Результат[Files];
Страница = Результат[NPT];
Для Каждого ТекущийОбъект Из Объекты Цикл
МассивОбъектов.Добавить(ТекущийОбъект);
КонецЦикла;
Если Объекты.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор, Страница);
КонецЕсли;
КонецПроцедуры
Процедура РазложитьОбъектыПодробно(Знач Токен, МассивОбъектов)
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
МассивФайлов = Новый Массив;
ТекущийИД = ТекущийОбъект["id"];
Результат = ПолучитьСписокФайлов(Токен, , ТекущийИД);
Для Каждого Файл Из Результат Цикл
МассивФайлов.Добавить(Файл);
КонецЦикла;
ТекущийОбъект.Вставить("files", МассивФайлов);
КонецЦикла;
КонецПроцедуры
Процедура СформироватьПараметрыЗагрузкиФайла(Описание)
СформированноеОписание = Новый Соответствие;
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Описание);
СоотвтетствиеПолей = Новый Соответствие;
СоотвтетствиеПолей.Вставить("MIME" , "mimeType");
СоотвтетствиеПолей.Вставить("Имя" , "name");
СоотвтетствиеПолей.Вставить("Описание" , "description");
СоотвтетствиеПолей.Вставить("Родитель" , "parents");
СоотвтетствиеПолей.Вставить("Расширение", "fileExtension");
Для Каждого Элемент Из Описание Цикл
Если Элемент.Ключ = "Родитель" Тогда
ТекущееЗначение = Новый Массив;
ТекущееЗначение.Добавить(Элемент.Значение);
Иначе
ТекущееЗначение = Элемент.Значение;
КонецЕсли;
ИмяПоля = СоотвтетствиеПолей.Получить(Элемент.Ключ);
СформированноеОписание.Вставить(ИмяПоля, ТекущееЗначение);
КонецЦикла;
Описание = OPI_Инструменты.JSONСтрокой(СформированноеОписание);
КонецПроцедуры
#КонецОбласти

View File

@ -104,12 +104,26 @@
#КонецОбласти #КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИфункции #Область СлужебныеПроцедурыИфункции
Функция ПолучитьСписокРазрешений() Функция ПолучитьСписокРазрешений()
МассивРазрешений = Новый Массив; МассивРазрешений = Новый Массив;
МассивРазрешений.Добавить("https://www.googleapis.com/auth/calendar"); МассивРазрешений.Добавить("https://www.googleapis.com/auth/calendar");
МассивРазрешений.Добавить("https://www.googleapis.com/auth/drive");
Возврат СтрСоединить(МассивРазрешений, " "); Возврат СтрСоединить(МассивРазрешений, " ");

View File

@ -27,10 +27,10 @@
// BSLLS:Typo-off // BSLLS:Typo-off
// Раскомментировать, если выполняется OneScript // Раскомментировать, если выполняется OneScript
#Использовать "../../../tools" #Использовать "../../../tools"
#Использовать "../../../core" #Использовать "../../../core"
// #Использовать oint #Использовать oint
#Использовать asserts #Использовать asserts
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
@ -892,7 +892,7 @@
Результат = OPI_VK.ПолучитьСтатистикуПостов(МассивПостов, Параметры); Результат = OPI_VK.ПолучитьСтатистикуПостов(МассивПостов, Параметры);
OPI_Инструменты.Пауза(5); OPI_Инструменты.Пауза(5);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат) .ИмеетТип("Массив").ИмеетДлину(2); OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Массив").ИмеетДлину(2);
OPI_Инструменты.Пауза(5); OPI_Инструменты.Пауза(5);
@ -1535,9 +1535,9 @@
#КонецОбласти #КонецОбласти
#Область GoogleCalendar #Область GoogleWorkspace
Процедура ГК_ПолучитьСсылкуАвторизации() Экспорт Процедура ГВ_ПолучитьСсылкуАвторизации() Экспорт
ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID"); ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID");
Результат = OPI_GoogleWorkspace.СформироватьСсылкуПолученияКода(ClientID); Результат = OPI_GoogleWorkspace.СформироватьСсылкуПолученияКода(ClientID);
@ -1552,7 +1552,7 @@
КонецПроцедуры КонецПроцедуры
Процедура ГК_ПолучитьТокен() Экспорт Процедура ГВ_ПолучитьТокен() Экспорт
ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID"); ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID");
ClientSecret = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientSecret"); ClientSecret = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientSecret");
@ -1572,7 +1572,7 @@
КонецПроцедуры КонецПроцедуры
Процедура ГК_ОбновитьТокен() Экспорт Процедура ГВ_ОбновитьТокен() Экспорт
ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID"); ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID");
ClientSecret = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientSecret"); ClientSecret = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientSecret");
@ -1589,6 +1589,10 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#Область GoogleCalendar
Процедура ГК_ПолучитьСписокКалендарей() Экспорт Процедура ГК_ПолучитьСписокКалендарей() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token"); Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
@ -1732,6 +1736,81 @@
#КонецОбласти #КонецОбласти
#Область GoogleDrive
Процедура ГД_ПолучитьСписокКаталогов() Экспорт
MimeType = "mimeType";
Name = "name";
Имя = "ОПИ";
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Результат = 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);
КонецПроцедуры
#КонецОбласти
#Область Twitter #Область Twitter
Процедура Твиттер_ПолучитьСсылкуАвторизации() Экспорт Процедура Твиттер_ПолучитьСсылкуАвторизации() Экспорт

View File

@ -155,7 +155,7 @@
КонецФункции КонецФункции
Функция ПутьКФайлуДанных() Функция ПутьКФайлуДанных()
Возврат "G:\Мой диск\data.json"; // BSLLS:UsingHardcodePath-off Возврат "C:\GDrive\Мой диск\data.json"; // BSLLS:UsingHardcodePath-off
КонецФункции КонецФункции
Функция ПолучитьМассивРазделовТестирования() Функция ПолучитьМассивРазделовТестирования()
@ -163,10 +163,12 @@
МассивРазделов = Новый Массив; МассивРазделов = Новый Массив;
МассивРазделов.Добавить("Телеграм"); МассивРазделов.Добавить("Телеграм");
МассивРазделов.Добавить("ВКонтакте"); МассивРазделов.Добавить("ВКонтакте");
МассивРазделов.Добавить("Яндекс.Диск");
МассивРазделов.Добавить("Google Calendar");
МассивРазделов.Добавить("Twitter");
МассивРазделов.Добавить("Viber"); МассивРазделов.Добавить("Viber");
МассивРазделов.Добавить("Twitter");
МассивРазделов.Добавить("Яндекс.Диск");
МассивРазделов.Добавить("Google Workspace");
МассивРазделов.Добавить("Google Calendar");
МассивРазделов.Добавить("Google Drive");
Возврат МассивРазделов; Возврат МассивРазделов;
@ -180,6 +182,8 @@
Календарь = "Google Calendar"; Календарь = "Google Calendar";
Твиттер = "Twitter"; Твиттер = "Twitter";
Вайбер = "Viber"; Вайбер = "Viber";
Драйв = "Google Drive";
ВСпейс = "Google Workspace";
ТаблицаТестов = Новый ТаблицаЗначений; ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод"); ТаблицаТестов.Колонки.Добавить("Метод");
@ -241,14 +245,18 @@
НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск);
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Календарь); НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьТокен" , "Получить токен" , Календарь); НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс);
НовыйТест(ТаблицаТестов, "ГК_ОбновитьТокен" , "Обновить токен" , Календарь); НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь); НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь); НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь); НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь); НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв);
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);
@ -273,8 +281,12 @@
Функция ПолучитьОбщийМодуль(Знач Имя) Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя); // BSLLS:ExecuteExternalCodeInCommonModule-off Модуль = Вычислить(Имя); // BSLLS:ExecuteExternalCodeInCommonModule-off
Возврат Модуль; Возврат Модуль;
КонецФункции КонецФункции

View File

@ -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", ЧислоВСтроку(Размер));
КонецЕсли;
КонецПроцедуры
Процедура УдалитьПустыеКлючиЗначения(Знач Коллекция, ВыходнаяКоллекция) Процедура УдалитьПустыеКлючиЗначения(Знач Коллекция, ВыходнаяКоллекция)
Для Каждого ЭлементКоллекции Из Коллекция Цикл Для Каждого ЭлементКоллекции Из Коллекция Цикл

View File

@ -1,4 +1,4 @@
// MIT License // MIT License
// Copyright (c) 2023 Anton Tsitavets // Copyright (c) 2023 Anton Tsitavets