1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-31 03:10:45 +02:00

Фиксы Google Calendar и начало Google Drive

This commit is contained in:
Anton 2024-03-11 19:32:45 +03:00
parent 70291963b1
commit 3b14128dfd
7 changed files with 216 additions and 37 deletions

View File

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

View File

@ -0,0 +1,142 @@
// 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"
#Область ПрограммныйИнтерфейс
#Область РаботаСФайлами
Функция ПолучитьСписокКаталогов(Знач Токен, Знач ИмяСодержит = "", Знач Подробно = Ложь) Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
МассивОбъектов = Новый Массив;
Отбор = Новый Массив;
Отбор.Добавить("mimeType = 'application/vnd.google-apps.folder'");
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
КонецЕсли;
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор);
Если Подробно Тогда
РазложитьОбъектыПодробно(Токен, МассивОбъектов);
КонецЕсли;
Возврат МассивОбъектов;
КонецФункции
Функция ПолучитьСписокФайлов(Знач Токен, Знач ИмяСодержит = "", Знач Каталог = "") Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
МассивОбъектов = Новый Массив;
Отбор = Новый Массив;
Отбор.Добавить("mimeType != 'application/vnd.google-apps.folder'");
Если ЗначениеЗаполнено(ИмяСодержит) Тогда
Отбор.Добавить("name contains '" + ИмяСодержит + "'");
КонецЕсли;
Если ЗначениеЗаполнено(Каталог) Тогда
Отбор.Добавить("'" + Каталог + "' in parents");
КонецЕсли;
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, , Отбор);
Возврат МассивОбъектов;
КонецФункции
Функция ПолучитьИнформациюОбОбъекте(Знач Токен, Знач Идентификатор) Экспорт
Заголовки = OPI_GoogleWorkspace.ПолучитьЗаголовокАвторизации(Токен);
URL = "https://www.googleapis.com/drive/v3/files/" + Идентификатор;
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПолучитьСписокОбъектовРекурсивно(Знач Заголовки, МассивОбъектов, Подробно = Ложь, Отбор = "", Страница = "")
URL = "https://www.googleapis.com/drive/v3/files";
Files = "files";
NPT = "nextPageToken";
Параметры = Новый Структура;
Если ЗначениеЗаполнено(Страница) Тогда
Параметры.Вставить("pageToken", Страница);
КонецЕсли;
Если ЗначениеЗаполнено(Отбор) И ТипЗнч(Отбор) = Тип("Массив") Тогда
ОтборСтрока = СтрСоединить(Отбор, " and ");
Параметры.Вставить("q", ОтборСтрока);
КонецЕсли;
Результат = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Объекты = Результат[Files];
Страница = Результат[NPT];
Для Каждого ТекущийОбъект Из Объекты Цикл
МассивОбъектов.Добавить(ТекущийОбъект);
КонецЦикла;
Если Объекты.Количество() > 0 И ЗначениеЗаполнено(Страница) Тогда
ПолучитьСписокОбъектовРекурсивно(Заголовки, МассивОбъектов, Подробно, Отбор, Страница);
КонецЕсли;
КонецПроцедуры
Процедура РазложитьОбъектыПодробно(Знач Токен, МассивОбъектов)
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
МассивФайлов = Новый Массив;
ТекущийИД = ТекущийОбъект["id"];
Результат = ПолучитьСписокФайлов(Токен, , ТекущийИД);
Для Каждого Файл Из Результат Цикл
МассивФайлов.Добавить(Файл);
КонецЦикла;
ТекущийОбъект.Вставить("files", МассивФайлов);
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3bf39c90-a263-4300-b800-7fd85f7c6d40">
<name>OPI_GoogleDrive</name>
<synonym>
<key></key>
<value>OPI google drive</value>
</synonym>
<server>true</server>
</mdclass:CommonModule>

View File

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

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -167,6 +167,8 @@
МассивРазделов.Добавить("Google Calendar");
МассивРазделов.Добавить("Twitter");
МассивРазделов.Добавить("Viber");
МассивРазделов.Добавить("Google Drive");
МассивРазделов.Добавить("Google Workspace");
Возврат МассивРазделов;
@ -180,6 +182,8 @@
Календарь = "Google Calendar";
Твиттер = "Twitter";
Вайбер = "Viber";
Драйв = "Google Drive";
ВСпейс = "Google Workspace";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");
@ -241,14 +245,17 @@
НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск);
НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьТокен" , "Получить токен" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_ОбновитьТокен" , "Обновить токен" , Календарь);
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс);
НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс);
НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь);
НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь);
НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв);
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);

View File

@ -1,4 +1,4 @@
// MIT License
// MIT License
// Copyright (c) 2023 Anton Tsitavets
@ -1535,9 +1535,9 @@
#КонецОбласти
#Область GoogleCalendar
#Область GoogleWorkspace
Процедура ГК_ПолучитьСсылкуАвторизации() Экспорт
Процедура ГВ_ПолучитьСсылкуАвторизации() Экспорт
ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID");
Результат = OPI_GoogleWorkspace.СформироватьСсылкуПолученияКода(ClientID);
@ -1552,7 +1552,7 @@
КонецПроцедуры
Процедура ГК_ПолучитьТокен() Экспорт
Процедура ГВ_ПолучитьТокен() Экспорт
ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID");
ClientSecret = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientSecret");
@ -1572,7 +1572,7 @@
КонецПроцедуры
Процедура ГК_ОбновитьТокен() Экспорт
Процедура ГВ_ОбновитьТокен() Экспорт
ClientID = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientID");
ClientSecret = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_ClientSecret");
@ -1589,6 +1589,10 @@
КонецПроцедуры
#КонецОбласти
#Область GoogleCalendar
Процедура ГК_ПолучитьСписокКалендарей() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
@ -1732,6 +1736,17 @@
#КонецОбласти
#Область GoogleDrive
Процедура ГД_ПолучитьСписокКаталогов() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Результат = OPI_GoogleDrive.ПолучитьСписокКаталогов(Токен, "ОПИ", Истина);
КонецПроцедуры
#КонецОбласти
#Область Twitter
Процедура Твиттер_ПолучитьСсылкуАвторизации() Экспорт

View File

@ -58,6 +58,7 @@
<commonModules>CommonModule.OPI_YandexDisk</commonModules>
<commonModules>CommonModule.OPI_GoogleWorkspace</commonModules>
<commonModules>CommonModule.OPI_GoogleCalendar</commonModules>
<commonModules>CommonModule.OPI_GoogleDrive</commonModules>
<commonModules>CommonModule.OPI_Тесты</commonModules>
<commonModules>CommonModule.OPI_ПолучениеДанныхТестов</commonModules>
</mdclass:Configuration>