mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-11-28 09:08:38 +02:00
Преобразование OPI -> OInt (workflow)
This commit is contained in:
parent
71ce42b1cc
commit
41d93c743a
44
.github/workflows/oint_test.yml
vendored
44
.github/workflows/oint_test.yml
vendored
@ -812,6 +812,48 @@ jobs:
|
||||
if: ${{ cancelled() }} == false
|
||||
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ЗагрузитьУдалитьВФ"
|
||||
|
||||
|
||||
Testing-Airtable:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Decode, Build]
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- uses: otymko/setup-onescript@v1.4
|
||||
with:
|
||||
version: 1.9.0
|
||||
|
||||
- name: Получить тестовые данные из кэша
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
key: test-data
|
||||
path: ./data.json
|
||||
|
||||
- name: Установить asserts и 1testrunner
|
||||
run: |
|
||||
opm install asserts
|
||||
opm install 1testrunner
|
||||
|
||||
- name: Установить OInt
|
||||
run: |
|
||||
cd ./OInt
|
||||
opm build
|
||||
opm install *.ospx
|
||||
|
||||
|
||||
|
||||
- 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
|
||||
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
|
||||
@ -853,7 +895,7 @@ jobs:
|
||||
|
||||
Clear-Cache:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Encode]
|
||||
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Testing-Airtable, Encode]
|
||||
if: ${{ always() }}
|
||||
steps:
|
||||
- name: Очистка основного кэша
|
||||
|
334
OInt/core/Modules/OPI_Airtable.os
Normal file
334
OInt/core/Modules/OPI_Airtable.os
Normal file
@ -0,0 +1,334 @@
|
||||
// Библиотека: Airtable
|
||||
// Команда CLI: Airtable
|
||||
|
||||
// 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
|
||||
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
#Использовать "../../tools"
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область РаботаСБазами
|
||||
|
||||
// Получить список баз
|
||||
// Получает список доступных баз
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// Отступ - Строка - Идентификатор следующей страницы списка баз из перыдудщего запроса - offser
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция ПолучитьСписокБаз(Знач Токен, Знач Отступ = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Отступ);
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
Параметры = Новый Структура;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("offset", Отступ, "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить таблицы базы
|
||||
// Получает схему таблиц базы
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы - base
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция ПолучитьТаблицыБазы(Знач Токен, Знач База) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать базу
|
||||
// Создает новую базу данных
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// РабочееПространство - Строка - Идентификатор рабочего пространства - ws
|
||||
// Наименование - Строка - Наименование новой базы - title
|
||||
// КоллекцияТаблиц - Соответствие Из КлючИЗначение - Описание таблиц: Ключ > имя, Значение > массив полей - tablesdata
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция СоздатьБазу(Знач Токен, Знач РабочееПространство, Знач Наименование, Знач КоллекцияТаблиц) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(КоллекцияТаблиц);
|
||||
|
||||
Если Не ТипЗнч(КоллекцияТаблиц) = Тип("Структура")
|
||||
И Не ТипЗнч(КоллекцияТаблиц) = Тип("Соответствие") Тогда
|
||||
|
||||
ВызватьИсключение "Ошибка в данных коллекции таблиц";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
МассивТаблиц = Новый Массив;
|
||||
|
||||
Для Каждого Таблица Из КоллекцияТаблиц Цикл
|
||||
|
||||
Описание = СформироватьОписаниеТаблицы(Таблица.Ключ, Таблица.Значение);
|
||||
МассивТаблиц.Добавить(Описание);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("tables" , МассивТаблиц , "Массив", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("workspaceId", РабочееПространство, "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСТаблицами
|
||||
|
||||
// Создать таблицу
|
||||
// Создает новую таблицу в базе
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы - base
|
||||
// Наименование - Строка - Наименование новой таблицы - title
|
||||
// МассивПолей - Массив Из Структура - Массив описаний полей - fieldsdata
|
||||
// Описание - Строка - Описание таблицы - description
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция СоздатьТаблицу(Знач Токен, Знач База, Знач Наименование, Знач МассивПолей, Знач Описание = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
Параметры = СформироватьОписаниеТаблицы(Наименование, МассивПолей, Описание);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Изменить таблицу
|
||||
// Изменяет наименование и|или описание базы
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// Наименование - Строка - Новое наименование - title
|
||||
// Описание - Строка - Новое описание - description
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция ИзменитьТаблицу(Знач Токен, Знач База, Знач Таблица, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица;
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
Параметры = Новый Структура;
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСПолями
|
||||
|
||||
// Создать поле
|
||||
// Создет новое поле в таблице
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// СтруктураПоля - Структура Из КлючИЗначение - Описание нового поля - fielddata
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция СоздатьПоле(Знач Токен, Знач База, Знач Таблица, Знач СтруктураПоля) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(СтруктураПоля);
|
||||
|
||||
Если Не ТипЗнч(СтруктураПоля) = Тип("Структура")
|
||||
И Не ТипЗнч(СтруктураПоля) = Тип("Соответствие") Тогда
|
||||
|
||||
ВызватьИсключение "Ошибка в данных описания поля";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases/" + База + "/tables/" + Таблица + "/fields";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, СтруктураПоля, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Изменить поле
|
||||
// Изменяет имя и|или описание существующего поля таблицы
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен - token
|
||||
// База - Строка - Идентификатор базы База - base
|
||||
// Таблица - Строка - Идентификатор таблицы - table
|
||||
// Поле - Строка - Идентификатор поля - field
|
||||
// Наименование - Строка - Новое наименование - title
|
||||
// Описание - Строка - Новое описание - description
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Airtable
|
||||
Функция ИзменитьПоле(Знач Токен, Знач База, Знач Таблица, Знач Поле, Знач Наименование = "", Знач Описание = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
|
||||
|
||||
URL = "https://api.airtable.com/v0/meta/bases/"
|
||||
+ База
|
||||
+ "/tables/"
|
||||
+ Таблица
|
||||
+ "/fields/"
|
||||
+ Поле;
|
||||
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
|
||||
Параметры = Новый Структура();
|
||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("description", Описание , "Строка", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Patch(URL, Параметры, Заголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить поле (строковое)
|
||||
// Получает описание поля строкового типа
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование нового поля - title
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание поля
|
||||
Функция ПолучитьПолеСтроковое(Знач Наименование) Экспорт
|
||||
Возврат ОписаниеПримитивногоПоля(Наименование, "richText");
|
||||
КонецФункции
|
||||
|
||||
// Получить поле (числовое)
|
||||
// Получает описание поля числового типа
|
||||
//
|
||||
// Параметры:
|
||||
// Наименование - Строка - Наименование нового поля - title
|
||||
// Точность - Число,Строка - Число знаков после запятой - precision
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание поля
|
||||
Функция ПолучитьПолеНомера(Знач Наименование, Знач Точность = 0) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Точность);
|
||||
|
||||
СтруктураОпций = Новый Структура("precision", Точность);
|
||||
Возврат ОписаниеПримитивногоПоля(Наименование, "number", СтруктураОпций);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ПолучитьЗаголовокАвторизации(Знач Токен) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
|
||||
Заголовки = Новый Соответствие;
|
||||
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
||||
|
||||
Возврат Заголовки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьОписаниеТаблицы(Знач Наименование, Знач МассивПолей, Знач Описание = "")
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Наименование);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПолей);
|
||||
|
||||
ОписаниеТаблицы = Новый Структура("name,fields", Наименование, МассивПолей);
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("description", Описание, "Строка", ОписаниеТаблицы);
|
||||
|
||||
Возврат ОписаниеТаблицы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеПримитивногоПоля(Знач Наименование, Знач Тип, Знач Опции = "")
|
||||
|
||||
СтруктураПоля = Новый Структура();
|
||||
OPI_Инструменты.ДобавитьПоле("name" , Наименование, "Строка" , СтруктураПоля);
|
||||
OPI_Инструменты.ДобавитьПоле("type" , Тип , "Строка" , СтруктураПоля);
|
||||
OPI_Инструменты.ДобавитьПоле("options", Опции , "Коллекция", СтруктураПоля);
|
||||
|
||||
Возврат СтруктураПоля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
@ -25,8 +25,8 @@
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
// BSLLS:Typo-off
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
#Использовать "../../tools"
|
||||
@ -717,6 +717,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяФайла);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Заголовок);
|
||||
|
||||
Строка_ = "Строка";
|
||||
Upload_url = "upload_url";
|
||||
File_id = "file_id";
|
||||
URL = "https://slack.com/api/files.getUploadURLExternal";
|
||||
@ -724,8 +725,8 @@
|
||||
Размер = Файл.Размер();
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("filename", ИмяФайла, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("length" , Размер , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("filename", ИмяФайла, Строка_, Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("length" , Размер , Строка_, Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
URL = Ответ[Upload_url];
|
||||
@ -743,8 +744,8 @@
|
||||
ФайлСлак = Новый Структура("id, title", Идентификатор, Заголовок);
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("filename" , ИмяФайла, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("channel_id", Канал , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("filename" , ИмяФайла, Строка_, Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("channel_id", Канал , Строка_, Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("files" , ФайлСлак, "Массив", Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
||||
@ -884,14 +885,15 @@
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
||||
Функция ДобавитьВнешнийФайл(Знач Токен, Знач URL, Знач Заголовок) Экспорт
|
||||
|
||||
Строка_ = "Строка";
|
||||
URL = "https://slack.com/api/files.remote.add";
|
||||
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
||||
UID = Строка(Новый УникальныйИдентификатор());
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("external_url", URL , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("external_id" , UID , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("title" , Заголовок , "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("external_url", URL , Строка_, Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("external_id" , UID , Строка_, Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("title" , Заголовок , Строка_, Параметры);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
||||
|
||||
|
@ -971,6 +971,8 @@
|
||||
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
|
||||
Функция СкачатьФайл(Знач Токен, Знач IDФайла) Экспорт
|
||||
|
||||
Result = "result";
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDФайла);
|
||||
|
||||
@ -979,7 +981,7 @@
|
||||
URL = "api.telegram.org/bot" + Токен + "/getFile";
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры);
|
||||
|
||||
Путь = Ответ["result"]["file_path"];
|
||||
Путь = Ответ[Result]["file_path"];
|
||||
|
||||
Если Не ЗначениеЗаполнено(Путь) Тогда
|
||||
Возврат Ответ;
|
||||
|
@ -32,6 +32,7 @@
|
||||
// BSLLS:DuplicateStringLiteral-off
|
||||
|
||||
// @skip-check undefined-variable
|
||||
// @skip-check wrong-string-literal-content
|
||||
|
||||
// Раскомментировать, если выполняется OneScript
|
||||
#Использовать oint
|
||||
@ -3377,7 +3378,7 @@
|
||||
|
||||
Результат = OPI_Slack.ЗагрузитьФайл(Токен, Файл, ИмяФайла, Заголовок, Канал);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл");
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьФайл (в канал)");
|
||||
|
||||
ЗагруженныйФайл = Результат["files"][0];
|
||||
МассивФайлов.Добавить(ЗагруженныйФайл["id"]);
|
||||
@ -3424,6 +3425,7 @@
|
||||
|
||||
Проверка_СлакОк(Результат);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["files"]).ИмеетТип("Массив");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Слак_ЗагрузитьУдалитьВФ() Экспорт
|
||||
@ -3467,6 +3469,113 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Airtable
|
||||
|
||||
Процедура АТ_СоздатьБазу() Экспорт
|
||||
|
||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||
Область = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Workspace");
|
||||
Наименование = "Тестовая база";
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер"));
|
||||
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
|
||||
|
||||
ИмяТаблицы = "Тестовая таблица";
|
||||
|
||||
СоответствиеТаблиц = Новый Соответствие;
|
||||
СоответствиеТаблиц.Вставить(ИмяТаблицы, МассивПолей);
|
||||
|
||||
Результат = OPI_Airtable.СоздатьБазу(Токен, Область, Наименование, СоответствиеТаблиц);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазу");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["id"]).Заполнено();
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"][0]["name"]).Равно(ИмяТаблицы);
|
||||
|
||||
База = Результат["id"];
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Base", База);
|
||||
|
||||
Результат = OPI_Airtable.ПолучитьТаблицыБазы(Токен, База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТаблицыБазы");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"]).Заполнено();
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["tables"]).ИмеетТип("Массив");
|
||||
|
||||
Результат = OPI_Airtable.ПолучитьСписокБаз(Токен);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокБаз");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["bases"]).Заполнено();
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["bases"]).ИмеетТип("Массив");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура АТ_СоздатьТаблицу() Экспорт
|
||||
|
||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеНомера("Номер"));
|
||||
МассивПолей.Добавить(OPI_Airtable.ПолучитьПолеСтроковое("Строковое"));
|
||||
|
||||
ИмяТаблицы = "Тестовая таблица 2";
|
||||
Описание = "Новая таблица";
|
||||
|
||||
Результат = OPI_Airtable.СоздатьТаблицу(Токен, База, ИмяТаблицы, МассивПолей, Описание);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(ИмяТаблицы);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
|
||||
|
||||
Таблица = Результат["id"];
|
||||
ИмяТаблицы = "Тестовая таблица 2 (изм.)";
|
||||
Описание = "Новая таблица (изм.)";
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Airtable_Table", Таблица);
|
||||
|
||||
Результат = OPI_Airtable.ИзменитьТаблицу(Токен, База, Таблица, ИмяТаблицы, Описание);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьТаблицу");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(ИмяТаблицы);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура АТ_СоздатьПоле() Экспорт
|
||||
|
||||
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Token");
|
||||
База = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Base");
|
||||
Таблица = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Airtable_Table");
|
||||
Имя = Строка(Новый УникальныйИдентификатор);
|
||||
|
||||
Поле = OPI_Airtable.ПолучитьПолеНомера(Имя);
|
||||
|
||||
Результат = OPI_Airtable.СоздатьПоле(Токен, База, Таблица, Поле);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьПоле");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(Имя);
|
||||
|
||||
Поле = Результат["id"];
|
||||
Имя = Имя + "(изм.)";
|
||||
Описание = "Новое описание";
|
||||
|
||||
Результат = OPI_Airtable.ИзменитьПоле(Токен, База, Таблица, Поле, Имя, Описание);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьПоле");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["name"]).Равно(Имя);
|
||||
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["description"]).Равно(Описание);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -29,6 +29,7 @@
|
||||
// BSLLS:DeprecatedMessage-off
|
||||
// BSLLS:UsingServiceTag-off
|
||||
// BSLLS:ExecuteExternalCodeInCommonModule-off
|
||||
// BSLLS:DuplicateStringLiteral-off
|
||||
|
||||
//@skip-check use-non-recommended-method
|
||||
|
||||
@ -52,9 +53,10 @@
|
||||
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
|
||||
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
|
||||
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
|
||||
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
||||
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
|
||||
Разделы.Вставить("Notion" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Slack" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("Airtable" , СтандартныеЗависимости);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@ -73,6 +75,7 @@
|
||||
Ноушн = "Notion";
|
||||
Слак = "Slack";
|
||||
Таблицы = "GoogleSheets";
|
||||
АирТ = "Airtable";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@ -193,10 +196,14 @@
|
||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокВФ" , "Получить список внеш. файлов" , Слак);
|
||||
НовыйТест(ТаблицаТестов, "Слак_ЗагрузитьУдалитьВФ" , "Загрузить/Удалить внеш. файл" , Слак);
|
||||
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьБазу" , "Создать/Изменить базу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьТаблицу" , "Создать/Изменить таблицу" , АирТ);
|
||||
НовыйТест(ТаблицаТестов, "АТ_СоздатьПоле" , "Создать/Изменить поле" , АирТ);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОжидаетЧто(Значение) Экспорт
|
||||
|
||||
|
@ -272,6 +272,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьЧисло(Значение) Экспорт
|
||||
|
||||
ОписаниеТипа = Новый ОписаниеТипов("Число");
|
||||
Значение = ОписаниеТипа.ПривестиЗначение(Значение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
Loading…
Reference in New Issue
Block a user