1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-03-25 21:39:21 +02:00

Начал работать над Notion API

This commit is contained in:
Anton 2024-01-20 18:02:51 +03:00
parent 25517669af
commit 0d868aafaa
4 changed files with 113 additions and 1 deletions

View File

@ -0,0 +1,100 @@
#Область ПрограммныйИнтерфейс
#Область РаботаСоСтраницами
// Создать дочернюю страницу
//
// Параметры:
// Токен - Строка - Токен
// Заголовок - Строка - Заголовок страницы
// Родитель - Строка - ID Родителя
// РодительБаза - Булево - Истина, если родитель - база, Ложь - если страница
//
// Возвращаемое значение:
// Строка, Произвольный, HTTPОтвет, ДвоичныеДанные, Неопределено - Ответ сервера Notion
Функция СоздатьСтраницу(Знач Токен, Знач Заголовок, Знач Родитель, Знач РодительБаза = Ложь) Экспорт
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Родитель = ИдентификацияРодителя(Родитель, РодительБаза);
Свойства = Новый Структура;
ДобавитьЗаголовокСтраницы(Заголовок, Свойства);
Параметры = Новый Структура;
Параметры.Вставить("parent" , Родитель);
Параметры.Вставить("properties", Свойства);
Ответ = OPI_Инструменты.Post("https://api.notion.com/v1/pages", Параметры, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization" , "Bearer " + Токен);
Заголовки.Вставить("Notion-Version", "2022-06-28");
Возврат Заголовки;
КонецФункции
Процедура ПреобразоватьИД(Идентификатор)
Если СтрНайти(Идентификатор, "-" = 0) Тогда
МассивЧастей = Новый Массив;
МассивЧастей.Добавить(Лев(Идентификатор , 8));
МассивЧастей.Добавить(Сред(Идентификатор , 9 , 4));
МассивЧастей.Добавить(Сред(Идентификатор , 12, 4));
МассивЧастей.Добавить(Сред(Идентификатор , 15, 4));
МассивЧастей.Добавить(Прав(Идентификатор , 12));
Идентификатор = СтрСоединить(МассивЧастей, "-");
КонецЕсли
КонецПроцедуры
Функция ИдентификацияРодителя(Знач Родитель, Знач РодительБаза)
ПреобразоватьИД(Родитель);
ПолеИдентификатора = ?(РодительБаза, "database_id", "page_id");
СтруктураРодителя = Новый Структура(ПолеИдентификатора, Родитель);
Возврат СтруктураРодителя;
КонецФункции
Процедура ДобавитьЗаголовокСтраницы(Знач Заголовок, ОсновнаяСтруктура)
ПодчиненнаяСтруктура = Новый Структура;
СтруктураДанных = Новый Структура;
СтруктураТекста = Новый Структура;
МассивДанных = Новый Массив;
СтруктураТекста.Вставить("content", Заголовок);
СтруктураТекста.Вставить("link" , Неопределено);
СтруктураДанных.Вставить("text", СтруктураТекста);
СтруктураДанных.Вставить("type", "text");
МассивДанных.Добавить(СтруктураДанных);
ПодчиненнаяСтруктура.Вставить("id" , "title");
ПодчиненнаяСтруктура.Вставить("type" , "title");
ПодчиненнаяСтруктура.Вставить("title", МассивДанных);
ОсновнаяСтруктура.Вставить("title", ПодчиненнаяСтруктура);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1bef723b-a2a4-4547-b29f-63cf9c78d813">
<name>OPI_Notion</name>
<synonym>
<key>ru</key>
<value>Методы работы с Notion (ОПИ)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -3,7 +3,7 @@
<name>OPI_Twitter</name>
<synonym>
<key>ru</key>
<value>OPI twitter</value>
<value>Методы работы с Twitter (ОПИ)</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>

View File

@ -55,5 +55,6 @@
<commonModules>CommonModule.OPI_VK</commonModules>
<commonModules>CommonModule.OPI_Viber</commonModules>
<commonModules>CommonModule.OPI_Twitter</commonModules>
<commonModules>CommonModule.OPI_Notion</commonModules>
<commonModules>CommonModule.OPI_Криптография</commonModules>
</mdclass:Configuration>