1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-04-11 11:41:56 +02:00

Airtable API

This commit is contained in:
Anton Titovets 2024-05-08 11:50:26 +03:00
parent 6bd119cd5c
commit 7d0545af17
3 changed files with 207 additions and 9 deletions

View File

@ -35,6 +35,35 @@
#Область РаботаСБазами
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
URL = "https://api.airtable.com/v0/meta/bases";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
@ -70,7 +99,90 @@
#КонецОбласти
#Область ФормированиеПолей
#Область РаботаСТаблицами
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСПолями
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
ВызватьИсключение "Ошибка в данных описания поля";
КонецЕсли;
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
Возврат Ответ;
КонецФункции
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
URL = "https://api.airtable.com/v0/meta/bases/"
+ База
+ "/tables/"
+ Таблица
+ "/fields/"
+ Поле;
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура();
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
Возврат ОписаниеПримитовногоПоля(Наименование, "richText");
@ -103,13 +215,15 @@
КонецФункции
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей)
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
Возврат ОписаниеТаблицы;
КонецФункции

View File

@ -196,11 +196,13 @@
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать базу" , АирТ);
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
Возврат ТаблицаТестов;
КонецФункции
КонецФункции
Функция ОжидаетЧто(Значение) Экспорт

View File

@ -3476,18 +3476,100 @@
Наименование = "Тестовая база";
МассивПолей = Новый Массив;
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Автономер"));
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер"));
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
ИмяТаблицы = "Тестовая таблица";
СоответствиеТаблиц = Новый Соответствие;
СоответствиеТаблиц.Вставить("Тестовая таблица", МассивПолей);
СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей);
Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОБоте");
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазу");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"][0]["name"]).Равно(Наименование);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"][0]["name"]).Равно(ИмяТаблицы);
База = Результат["id"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Base", База);
Результат = OPI_Airtable.ПолучитьТаблицыБазы(Токен, База);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТаблицыБазы");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"]).Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"]).ИмеетТип("Массив");
Результат = OPI_Airtable.ПолучитьСписокБаз(Токен);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокБаз");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["bases"]).Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["bases"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура АТ_СоздатьТаблицу() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
МассивПолей = Новый Массив;
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер"));
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
ИмяТаблицы = "Тестовая таблица 2";
Описание = "Новая таблица";
Результат = OPI_Airtable.СоздатьТаблицу(Токен, База, ИмяТаблицы, МассивПолей, Описание);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(ИмяТаблицы);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
Таблица = Результат["id"];
ИмяТаблицы = "Тестовая таблица 2 (изм.)";
Описание = "Новая таблица (изм.)";
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Table", Таблица);
Результат = OPI_Airtable.ИзменитьТаблицу(Токен, База, Таблица, ИмяТаблицы, Описание);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьТаблицу");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(ИмяТаблицы);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
КонецПроцедуры
Процедура АТ_СоздатьПоле() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
Таблица = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Table");
Имя = Строка(Новый УникальныйИдентификатор);
Поле = OPI_Airtable.ПолучитьПолеНомера(Имя);
Результат = OPI_Airtable.СоздатьПоле(Токен, База, Таблица, Поле);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьПоле");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(Имя);
Поле = Результат["id"];
Имя = Имя + "(изм.)";
Описание = "Новое описание";
Результат = OPI_Airtable.ИзменитьПоле(Токен, База, Таблица, Поле, Имя, Описание);
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПоле");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(Имя);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
КонецПроцедуры