mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-25 02:42:28 +02:00
Merge branch 'main' of https://github.com/Bayselonarrend/OpenIntegrations
This commit is contained in:
commit
99c02e7856
4
.github/workflows/oint_test_Airtable.yml
vendored
4
.github/workflows/oint_test_Airtable.yml
vendored
@ -91,6 +91,10 @@ jobs:
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьПоле"
|
||||
|
||||
- name: Создать/Удалить записи
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьУдалитьЗаписи"
|
||||
|
||||
|
||||
- name: Записать измененные данные
|
||||
if: ${{ cancelled() }} == false
|
||||
|
4
.github/workflows/oint_test_full.yml
vendored
4
.github/workflows/oint_test_full.yml
vendored
@ -851,6 +851,10 @@ jobs:
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьПоле"
|
||||
|
||||
- name: Создать/Удалить записи
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "АТ_СоздатьУдалитьЗаписи"
|
||||
|
||||
Encode:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Testing-Twitter]
|
||||
|
@ -292,6 +292,128 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСЗаписями
|
||||
|
||||
// Получить список записей
|
||||
// Получает список записей выбранной таблицы
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы данных - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// Отступ - Строка - Иднтификатор следующей страницы данных из предыдущего запроса - offset
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция ПолучитьСписокЗаписей(Знач Токен, Знач База, Знач Таблица, Знач Отступ = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
|
||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Параметры = Новый Структура();
|
||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить запись
|
||||
// Получает данные строки таблицы по идентификатору
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы данных - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// Запись - Строка - Идентификатор записи в таблице - record
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция ПолучитьЗапись(Знач Токен, Знач База, Знач Таблица, Знач Запись) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Запись);
|
||||
|
||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + "/" + Запись;
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать записи
|
||||
// Создает одну или массив записей по описанию или массиву описаний значений полей
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы данных - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// Данные - Структура, Массив из Структура - Набор или массив наборов пар Ключ : Значение > Поле : Показатель - data
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция СоздатьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Данные) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Данные);
|
||||
|
||||
Параметры = Новый Структура();
|
||||
ДобавитьОписаниеДанных(Данные, Параметры);
|
||||
|
||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица;
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить записи
|
||||
// Удаляет одну или массив записей по идентификаторам
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы данных - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// Записи - Строка, Массив из Строка - Идентификатор или массив индентификаторов записей - records
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция УдалитьЗаписи(Знач Токен, Знач База, Знач Таблица, Знач Записи) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(Записи);
|
||||
|
||||
СтрокаЗаписей = "";
|
||||
|
||||
Для Каждого Запись Из Записи Цикл
|
||||
СтрокаЗаписей = СтрокаЗаписей
|
||||
+ ?(ЗначениеЗаполнено(СтрокаЗаписей), "&", "?")
|
||||
+ "records[]="
|
||||
+ OPI_Инструменты.ЧислоВСтроку(Запись);
|
||||
КонецЦикла;
|
||||
|
||||
URL = "https://api.airtable.com/v0/" + База + "/" + Таблица + СтрокаЗаписей;
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Delete(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -331,4 +453,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьОписаниеДанных(Знач Данные, Параметры)
|
||||
|
||||
Если ТипЗнч(Данные) = Тип("Массив") Тогда
|
||||
|
||||
МассивОтправки = Новый Массив;
|
||||
|
||||
Для Каждого ОписаниеЗаписи Из Данные Цикл
|
||||
МассивОтправки.Добавить(Новый Структура("fields", ОписаниеЗаписи));
|
||||
КонецЦикла;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("records", МассивОтправки, "Массив", Параметры);
|
||||
|
||||
Иначе
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("fields", Данные, "Коллекция", Параметры);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -3574,6 +3574,73 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура АТ_СоздатьУдалитьЗаписи() Экспорт
|
||||
|
||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
|
||||
Таблица = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Table");
|
||||
|
||||
Числовой = 10;
|
||||
Строчный = "Привет";
|
||||
|
||||
ОписаниеСтроки1 = Новый Структура("Номер,Строковое", Числовой, Строчный);
|
||||
ОписаниеСтроки2 = Новый Структура("Номер,Строковое", Числовой, Строчный);
|
||||
|
||||
МассивУдаляемых = Новый Массив;
|
||||
МассивОписаний = Новый Массив;
|
||||
МассивОписаний.Добавить(ОписаниеСтроки1);
|
||||
МассивОписаний.Добавить(ОписаниеСтроки2);
|
||||
|
||||
Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, МассивОписаний);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьЗаписи");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(2);
|
||||
|
||||
Для Каждого Запись Из Результат["records"] Цикл
|
||||
МассивУдаляемых.Добавить(Запись["id"]);
|
||||
КонецЦикла;
|
||||
|
||||
Результат = OPI_Airtable.СоздатьЗаписи(Токен, База, Таблица, ОписаниеСтроки1);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьЗаписи (одна)");
|
||||
|
||||
ОдиночнаяЗапись = Результат["id"];
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ОдиночнаяЗапись).Заполнено(ОдиночнаяЗапись);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["createdTime"]).Заполнено();
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["fields"]["Номер"]).Равно(Числовой);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(СокрЛП(Результат["fields"]["Строковое"])).Равно(Строчный);
|
||||
|
||||
Результат = OPI_Airtable.ПолучитьЗапись(Токен, База, Таблица, ОдиночнаяЗапись);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗапись");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Равно(ОдиночнаяЗапись);
|
||||
|
||||
Результат = OPI_Airtable.ПолучитьСписокЗаписей(Токен, База, Таблица);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокЗаписей");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(3);
|
||||
|
||||
Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, МассивУдаляемых);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(2);
|
||||
|
||||
Результат = OPI_Airtable.УдалитьЗаписи(Токен, База, Таблица, ОдиночнаяЗапись);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи (одна)");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"]).ИмеетТип("Массив");
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["records"].Количество()).Равно(1);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -200,6 +200,7 @@
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьУдалитьЗаписи" , "Создать/Удалить записи" , АирТ);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
|
@ -184,11 +184,13 @@
|
||||
СтрокаПараметров = "?";
|
||||
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
ЗначениеПараметра = ПреобразоватьПараметрВСтроку(Параметр.Значение);
|
||||
|
||||
СтрокаПараметров = СтрокаПараметров
|
||||
+ Параметр.Ключ
|
||||
+ "="
|
||||
+ КодироватьСтроку(Параметр.Значение,
|
||||
СпособКодированияСтроки.КодировкаURL)
|
||||
+ ЗначениеПараметра
|
||||
+ "&";
|
||||
КонецЦикла;
|
||||
|
||||
@ -704,6 +706,21 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПреобразоватьПараметрВСтроку(Знач Значение)
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("Массив") Тогда
|
||||
Значение = СтрСоединить(Значение, ",");
|
||||
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||
Значение = "[" + Значение + "]";
|
||||
Иначе
|
||||
Значение = ЧислоВСтроку(Значение);
|
||||
Значение = КодироватьСтроку(Значение, СпособКодированияСтроки.КодировкаURL);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьТелоЗапроса(Запрос, Знач Параметры, Знач JSON)
|
||||
|
||||
Коллекция = ТипЗнч(Параметры) = Тип("Структура")
|
||||
|
BIN
data.json.gpg
BIN
data.json.gpg
Binary file not shown.
Loading…
Reference in New Issue
Block a user