mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-04-11 11:41:56 +02:00
Airtable API
This commit is contained in:
parent
6bd119cd5c
commit
7d0545af17
@ -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", Описание, "Строка", ОписаниеТаблицы);
|
||||
|
||||
Возврат ОписаниеТаблицы;
|
||||
|
||||
КонецФункции
|
||||
|
@ -196,7 +196,9 @@
|
||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
||||
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать базу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
|
@ -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"]).Равно(Описание);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user