1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

PXY: Изменение обработчиков

This commit is contained in:
Anton Titovets
2025-01-31 17:01:29 +03:00
parent ff5f18c645
commit e7a98d1666
7 changed files with 6750 additions and 6303 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -60,7 +60,7 @@
КонецФункции
// Запустить
// Запустить проект
// Запускает прокси сервер интеграций
//
// Параметры:
@@ -68,7 +68,7 @@
// Проект - Строка - Путь к файлу проекта - proj
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат остановки сервера
Функция Запустить(Знач Порт, Знач Проект) Экспорт
Функция ЗапуститьПроект(Знач Порт, Знач Проект) Экспорт
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
@@ -179,7 +179,7 @@
КонецФункции
// Получить обработчик запросов
// Получает информацию об обработчике по ID
// Получает информацию об обработчике по ключу
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
@@ -285,19 +285,100 @@
КонецФункции
// Изменить обработчик запросов
// Изменяет значения полей обработчика запросов
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
// БиблиотекаОПИ - Строка - Имя библиотеки в CLI формате - lib
// ФункцияОПИ - Строка - Имя функции Открытого пакета интеграций - func
// Метод - Строка - HTTP метод, который будет обрабатывать обработчик: GET, POST, MULTIPART - method
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат изменения обработчика
Функция ИзменитьОбработчикЗапросов(Знач Проект
, Знач КлючОбработчика
, Знач БиблиотекаОПИ = ""
, Знач ФункцияОПИ = ""
, Знач Метод = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(БиблиотекаОПИ);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ФункцияОПИ);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
Результат = ПроверитьСуществованиеПроекта(Проект);
Если Не Результат["result"] Тогда
Возврат Результат;
Иначе
Проект = Результат["path"];
КонецЕсли;
СтруктураЗаписи = Новый Структура;
Если ЗначениеЗаполнено(БиблиотекаОПИ) Тогда
СтруктураЗаписи.Вставить("library" , БиблиотекаОПИ);
КонецЕсли;
Если ЗначениеЗаполнено(ФункцияОПИ) Тогда
СтруктураЗаписи.Вставить("function", ФункцияОПИ);
КонецЕсли;
Если ЗначениеЗаполнено(Метод) Тогда
СтруктураЗаписи.Вставить("method" , Метод);
КонецЕсли;
Результат = ИзменитьПоляОбработчика(Проект, КлючОбработчика, СтруктураЗаписи);
Возврат Результат;
КонецФункции
// Отключить обработчик запросов
// Отключает обработчик по ключу
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат переключения
Функция ОтключитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика) Экспорт
Возврат ПереключитьОбработчикЗапросов(Проект, КлючОбработчика, Ложь);
КонецФункции
// Включить обработчик запросов
// Включает обработчик по ключу
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат переключения
Функция ВключитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика) Экспорт
Возврат ПереключитьОбработчикЗапросов(Проект, КлючОбработчика, Истина);
КонецФункции
#КонецОбласти
#Область УстановкаАргументов
// Установить аргумент обработчика
// Устанавливает аргумент для функции установщика, позволяя не указывать его при вызове
// Устанавливает аргумент для функции обработчика, позволяя не указывать его при вызове
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
// Аргумент - Строка - CLI аргумент (опция) для функции обработчика - arg
// Значение - Строка - Строковое значение аргумента - value
// Строгий - Булево - Истина > аргумент не может быть перезаписан параметром запроса - strict
// Строгий - Булево - Истина > аргумент не может быть перезаписан данными из запроса - strict
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат установки
@@ -598,7 +679,53 @@
КонецФункции
Функция ПолучитьUUID(Знач Длина)
Возврат Лев(СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""), Длина);
Возврат вРег(Лев(СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""), Длина));
КонецФункции
Функция ИзменитьПоляОбработчика(Знач Проект, Знач КлючОбработчика, Знач СтруктураЗаписи)
Если СтруктураЗаписи.Количество() > 0 Тогда
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "key");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", КлючОбработчика);
СтруктураФильтра.Вставить("raw" , Ложь);
ИмяТаблицыОбработчиков = КонстантноеЗначение("ТаблицаОбработчиков");
Результат = OPI_SQLite.ОбновитьЗаписи(ИмяТаблицыОбработчиков
, СтруктураЗаписи
, СтруктураФильтра
, Проект);
Иначе
Результат = СформироватьОтвет(Ложь, "Nothing to change");
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПереключитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика, Знач Активность)
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
OPI_ПреобразованиеТипов.ПолучитьБулево(Активность);
Результат = ПроверитьСуществованиеПроекта(Проект);
Если Не Результат["result"] Тогда
Возврат Результат;
Иначе
Проект = Результат["path"];
КонецЕсли;
СтруктураЗаписи = Новый Структура("active", Активность);
Результат = ИзменитьПоляОбработчика(Проект, КлючОбработчика, СтруктураЗаписи);
Возврат Результат;
КонецФункции
#КонецОбласти

View File

@@ -47,6 +47,7 @@
//@skip-check undefined-function-or-procedure
//@skip-check wrong-string-literal-content
//@skip-check module-unused-local-variable
//@skip-check use-non-recommended-method
// Раскомментировать, если выполняется OneScript
#Использовать "../../../tools"
@@ -2324,9 +2325,16 @@
ПроксиИнтеграций_ДобавитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ПолучитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ПолучитьСписокОбработчиковЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ИзменитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ОтключитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ВключитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_УдалитьОбработчикЗапросов(ПараметрыТеста);
УдалитьФайлы(ПутьФайл);
Попытка
УдалитьФайлы(ПутьФайл);
Исключение
Сообщить("Не удалось удалить временный файл");
КонецПопытки;
КонецПроцедуры
@@ -17184,7 +17192,11 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьПроект (каталог)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ФайлСуществует(ПутьПроекта);
УдалитьФайлы(ПутьПроекта);
Попытка
УдалитьФайлы(ПутьПроекта);
Исключение
Сообщить("Не удалось удалить временный файл");
КонецПопытки;
КонецПроцедуры
@@ -17258,6 +17270,65 @@
КонецПроцедуры
Процедура ПроксиИнтеграций_ИзменитьОбработчикЗапросов(ПараметрыФункции)
Проект = ПараметрыФункции["Proxy_ProjectPath"];
КлючОбработчика = ПараметрыФункции["Proxy_HandlerKey"];
БиблиотекаОПИ = "dropbox";
ФункцияОПИ = "СоздатьПапку";
Результат = OPI_ПроксиИнтеграций.ИзменитьОбработчикЗапросов(Проект, КлючОбработчика, БиблиотекаОПИ, ФункцияОПИ);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьОбработчикЗапросов", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПроксиИнтеграций.ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьОбработчикЗапросов (проверка)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ПроксиОбработчик(Результат, БиблиотекаОПИ, ФункцияОПИ);
КонецПроцедуры
Процедура ПроксиИнтеграций_ОтключитьОбработчикЗапросов(ПараметрыФункции)
Проект = ПараметрыФункции["Proxy_ProjectPath"];
КлючОбработчика = ПараметрыФункции["Proxy_HandlerKey"];
Результат = OPI_ПроксиИнтеграций.ОтключитьОбработчикЗапросов(Проект, КлючОбработчика);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтключитьОбработчикЗапросов", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПроксиИнтеграций.ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтключитьОбработчикЗапросов (проверка)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ПроксиПереключение(Результат, Ложь);
КонецПроцедуры
Процедура ПроксиИнтеграций_ВключитьОбработчикЗапросов(ПараметрыФункции)
Проект = ПараметрыФункции["Proxy_ProjectPath"];
КлючОбработчика = ПараметрыФункции["Proxy_HandlerKey"];
Результат = OPI_ПроксиИнтеграций.ВключитьОбработчикЗапросов(Проект, КлючОбработчика);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВключитьОбработчикЗапросов", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПроксиИнтеграций.ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВключитьОбработчикЗапросов (проверка)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ПроксиПереключение(Результат, Истина);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -2119,6 +2119,20 @@
КонецПроцедуры
Процедура Проверка_ПроксиОбработчик(Знач Результат, Знач БиблиотекаОПИ, Знач ФункцияОПИ) Экспорт
ОжидаетЧто(Результат["data"]["library"]).Равно(БиблиотекаОПИ);
ОжидаетЧто(Результат["data"]["function"]).Равно(ФункцияОПИ);
КонецПроцедуры
Процедура Проверка_ПроксиПереключение(Знач Результат, Знач Активен) Экспорт
Активен = ?(Активен, 1, 0);
ОжидаетЧто(Результат["data"]["active"]).Равно(Активен);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -2119,6 +2119,20 @@
КонецПроцедуры
Процедура Проверка_ПроксиОбработчик(Знач Результат, Знач БиблиотекаОПИ, Знач ФункцияОПИ) Экспорт
ОжидаетЧто(Результат["data"]["library"]).Равно(БиблиотекаОПИ);
ОжидаетЧто(Результат["data"]["function"]).Равно(ФункцияОПИ);
КонецПроцедуры
Процедура Проверка_ПроксиПереключение(Знач Результат, Знач Активен) Экспорт
Активен = ?(Активен, 1, 0);
ОжидаетЧто(Результат["data"]["active"]).Равно(Активен);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -60,7 +60,7 @@
КонецФункции
// Запустить
// Запустить проект
// Запускает прокси сервер интеграций
//
// Параметры:
@@ -68,7 +68,7 @@
// Проект - Строка - Путь к файлу проекта - proj
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат остановки сервера
Функция Запустить(Знач Порт, Знач Проект) Экспорт
Функция ЗапуститьПроект(Знач Порт, Знач Проект) Экспорт
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
@@ -179,7 +179,7 @@
КонецФункции
// Получить обработчик запросов
// Получает информацию об обработчике по ID
// Получает информацию об обработчике по ключу
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
@@ -285,6 +285,87 @@
КонецФункции
// Изменить обработчик запросов
// Изменяет значения полей обработчика запросов
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
// БиблиотекаОПИ - Строка - Имя библиотеки в CLI формате - lib
// ФункцияОПИ - Строка - Имя функции Открытого пакета интеграций - func
// Метод - Строка - HTTP метод, который будет обрабатывать обработчик: GET, POST, MULTIPART - method
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат изменения обработчика
Функция ИзменитьОбработчикЗапросов(Знач Проект
, Знач КлючОбработчика
, Знач БиблиотекаОПИ = ""
, Знач ФункцияОПИ = ""
, Знач Метод = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(БиблиотекаОПИ);
OPI_ПреобразованиеТипов.ПолучитьСтроку(ФункцияОПИ);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
Результат = ПроверитьСуществованиеПроекта(Проект);
Если Не Результат["result"] Тогда
Возврат Результат;
Иначе
Проект = Результат["path"];
КонецЕсли;
СтруктураЗаписи = Новый Структура;
Если ЗначениеЗаполнено(БиблиотекаОПИ) Тогда
СтруктураЗаписи.Вставить("library" , БиблиотекаОПИ);
КонецЕсли;
Если ЗначениеЗаполнено(ФункцияОПИ) Тогда
СтруктураЗаписи.Вставить("function", ФункцияОПИ);
КонецЕсли;
Если ЗначениеЗаполнено(Метод) Тогда
СтруктураЗаписи.Вставить("method" , Метод);
КонецЕсли;
Результат = ИзменитьПоляОбработчика(Проект, КлючОбработчика, СтруктураЗаписи);
Возврат Результат;
КонецФункции
// Отключить обработчик запросов
// Отключает обработчик по ключу
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат переключения
Функция ОтключитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика) Экспорт
Возврат ПереключитьОбработчикЗапросов(Проект, КлючОбработчика, Ложь);
КонецФункции
// Включить обработчик запросов
// Включает обработчик по ключу
//
// Параметры:
// Проект - Строка - Путь к файлу проекта - proj
// КлючОбработчика - Строка - Ключ обработчика - handler
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат переключения
Функция ВключитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика) Экспорт
Возврат ПереключитьОбработчикЗапросов(Проект, КлючОбработчика, Истина);
КонецФункции
#КонецОбласти
#Область УстановкаАргументов
@@ -598,7 +679,53 @@
КонецФункции
Функция ПолучитьUUID(Знач Длина)
Возврат Лев(СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""), Длина);
Возврат вРег(Лев(СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""), Длина));
КонецФункции
Функция ИзменитьПоляОбработчика(Знач Проект, Знач КлючОбработчика, Знач СтруктураЗаписи)
Если СтруктураЗаписи.Количество() > 0 Тогда
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "key");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", КлючОбработчика);
СтруктураФильтра.Вставить("raw" , Ложь);
ИмяТаблицыОбработчиков = КонстантноеЗначение("ТаблицаОбработчиков");
Результат = OPI_SQLite.ОбновитьЗаписи(ИмяТаблицыОбработчиков
, СтруктураЗаписи
, СтруктураФильтра
, Проект);
Иначе
Результат = СформироватьОтвет(Ложь, "Nothing to change");
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ПереключитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика, Знач Активность)
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
OPI_ПреобразованиеТипов.ПолучитьБулево(Активность);
Результат = ПроверитьСуществованиеПроекта(Проект);
Если Не Результат["result"] Тогда
Возврат Результат;
Иначе
Проект = Результат["path"];
КонецЕсли;
СтруктураЗаписи = Новый Структура("active", Активность);
Результат = ИзменитьПоляОбработчика(Проект, КлючОбработчика, СтруктураЗаписи);
Возврат Результат;
КонецФункции
#КонецОбласти

View File

@@ -47,6 +47,7 @@
//@skip-check undefined-function-or-procedure
//@skip-check wrong-string-literal-content
//@skip-check module-unused-local-variable
//@skip-check use-non-recommended-method
// Раскомментировать, если выполняется OneScript
// #Использовать "../../../tools"
@@ -2324,9 +2325,16 @@
ПроксиИнтеграций_ДобавитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ПолучитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ПолучитьСписокОбработчиковЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ИзменитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ОтключитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_ВключитьОбработчикЗапросов(ПараметрыТеста);
ПроксиИнтеграций_УдалитьОбработчикЗапросов(ПараметрыТеста);
УдалитьФайлы(ПутьФайл);
Попытка
УдалитьФайлы(ПутьФайл);
Исключение
Сообщить("Не удалось удалить временный файл");
КонецПопытки;
КонецПроцедуры
@@ -17184,7 +17192,11 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьПроект (каталог)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ФайлСуществует(ПутьПроекта);
УдалитьФайлы(ПутьПроекта);
Попытка
УдалитьФайлы(ПутьПроекта);
Исключение
Сообщить("Не удалось удалить временный файл");
КонецПопытки;
КонецПроцедуры
@@ -17258,6 +17270,65 @@
КонецПроцедуры
Процедура ПроксиИнтеграций_ИзменитьОбработчикЗапросов(ПараметрыФункции)
Проект = ПараметрыФункции["Proxy_ProjectPath"];
КлючОбработчика = ПараметрыФункции["Proxy_HandlerKey"];
БиблиотекаОПИ = "dropbox";
ФункцияОПИ = "СоздатьПапку";
Результат = OPI_ПроксиИнтеграций.ИзменитьОбработчикЗапросов(Проект, КлючОбработчика, БиблиотекаОПИ, ФункцияОПИ);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьОбработчикЗапросов", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПроксиИнтеграций.ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьОбработчикЗапросов (проверка)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ПроксиОбработчик(Результат, БиблиотекаОПИ, ФункцияОПИ);
КонецПроцедуры
Процедура ПроксиИнтеграций_ОтключитьОбработчикЗапросов(ПараметрыФункции)
Проект = ПараметрыФункции["Proxy_ProjectPath"];
КлючОбработчика = ПараметрыФункции["Proxy_HandlerKey"];
Результат = OPI_ПроксиИнтеграций.ОтключитьОбработчикЗапросов(Проект, КлючОбработчика);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтключитьОбработчикЗапросов", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПроксиИнтеграций.ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтключитьОбработчикЗапросов (проверка)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ПроксиПереключение(Результат, Ложь);
КонецПроцедуры
Процедура ПроксиИнтеграций_ВключитьОбработчикЗапросов(ПараметрыФункции)
Проект = ПараметрыФункции["Proxy_ProjectPath"];
КлючОбработчика = ПараметрыФункции["Proxy_HandlerKey"];
Результат = OPI_ПроксиИнтеграций.ВключитьОбработчикЗапросов(Проект, КлючОбработчика);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВключитьОбработчикЗапросов", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПроксиИнтеграций.ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВключитьОбработчикЗапросов (проверка)", "ПроксиИнтеграций");
OPI_ПолучениеДанныхТестов.Проверка_ПроксиПереключение(Результат, Истина);
КонецПроцедуры
#КонецОбласти
#КонецОбласти