You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
PXY: Удаление и получение обработчиков
This commit is contained in:
13043
service/dictionaries/en.json
vendored
13043
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
134
src/ru/OInt/core/Modules/OPI_ПроксиИнтеграций.os
vendored
134
src/ru/OInt/core/Modules/OPI_ПроксиИнтеграций.os
vendored
@@ -53,7 +53,7 @@
|
||||
// Путь - Строка - Путь к файлу проекта - path
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - результат создания
|
||||
// Структура Из КлючИЗначение - Результат создания
|
||||
Функция СоздатьПроект(Знач Путь) Экспорт
|
||||
|
||||
Возврат НормализоватьПроект(Путь);
|
||||
@@ -65,16 +65,14 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Имя - Строка - Имя нового обработчика - name
|
||||
// СекретныйКлюч - Строка - Секретный ключ для URL обработчика - secret
|
||||
// ФункцияОПИ - Строка - Имя функции Открытого пакета интеграций - func
|
||||
// Метод - Строка - HTTP метод, который будет обрабатывать обработчик: GET, POST, MULTIPART - method
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - результат добавления обработчика
|
||||
Функция ДобавитьОбработчикЗапросов(Знач Проект, Знач Имя, Знач СекретныйКлюч, Знач Метод = "GET") Экспорт
|
||||
// Структура Из КлючИЗначение - Результат добавления обработчика
|
||||
Функция ДобавитьОбработчикЗапросов(Знач Проект, Знач ФункцияОПИ, Знач Метод = "GET") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СекретныйКлюч);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ФункцияОПИ);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
@@ -85,16 +83,82 @@
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
МассивДанных = Новый Массив;
|
||||
МассивДанных.Добавить(Новый Структура("name,secret,method", Имя, СекретныйКлюч, Метод));
|
||||
СекретныйКлюч = ПолучитьУникальныйКлючОбработчика(Проект);
|
||||
|
||||
Если ТипЗнч(СекретныйКлюч) = Тип("Структура") Тогда
|
||||
СекретныйКлюч.Вставить("message", "Не удалось сформировать UID обработчика. Попробуйте еще раз");
|
||||
Возврат СекретныйКлюч;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("function", ФункцияОПИ);
|
||||
СтруктураЗаписи.Вставить("id" , СекретныйКлюч);
|
||||
СтруктураЗаписи.Вставить("method" , Метод);
|
||||
СтруктураЗаписи.Вставить("active" , Истина);
|
||||
|
||||
ИмяТаблицыОбработчиков = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
Результат = OPI_SQLite.ДобавитьЗаписи(ИмяТаблицыОбработчиков, МассивДанных, , Проект);
|
||||
Результат = OPI_SQLite.ДобавитьЗаписи(ИмяТаблицыОбработчиков, СтруктураЗаписи, Ложь, Проект);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("result" , Истина);
|
||||
Результат.Вставить("key" , СекретныйКлюч);
|
||||
Результат.Вставить("url_example", "localhost:port/" + СекретныйКлюч);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить список обработчиков запросов
|
||||
// Получает список обработчиков в проекте
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Список обработчиков
|
||||
Функция ПолучитьСписокОбработчиковЗапросов(Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Проект);
|
||||
|
||||
Таблица = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , , , , Проект);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить обработчик запросов
|
||||
// Удаляет обработчик запросов из базы
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// КлючОбработчика - Строка - Ключ обработчика - handler
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат удаления
|
||||
Функция УдалитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
|
||||
|
||||
Таблица = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
|
||||
СтруктураФильтра.Вставить("field", "id");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Результат = OPI_SQLite.УдалитьЗаписи(Таблица, СтруктураФильтра, Проект);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
//
|
||||
@@ -102,7 +166,7 @@
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - результат остановки сервера
|
||||
// Структура Из КлючИЗначение - Результат остановки сервера
|
||||
Функция Запустить(Знач Порт, Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
@@ -228,6 +292,7 @@
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
УдалитьФайлы(Путь);
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
@@ -237,10 +302,10 @@
|
||||
Функция СоздатьТаблицуОбработчиков(Путь)
|
||||
|
||||
СтруктураТаблицы = Новый Структура();
|
||||
СтруктураТаблицы.Вставить("id" , "INTEGER PRIMARY KEY");
|
||||
СтруктураТаблицы.Вставить("name" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("secret", "TEXT");
|
||||
СтруктураТаблицы.Вставить("method", "TEXT");
|
||||
СтруктураТаблицы.Вставить("id" , "TEXT PRIMARY KEY NOT NULL UNIQUE");
|
||||
СтруктураТаблицы.Вставить("function", "TEXT");
|
||||
СтруктураТаблицы.Вставить("method" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("active" , "BOOLEAN");
|
||||
|
||||
ИмяТаблицыОбработчиков = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
Результат = OPI_SQLite.СоздатьТаблицу(ИмяТаблицыОбработчиков, СтруктураТаблицы, Путь);
|
||||
@@ -249,6 +314,45 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьУникальныйКлючОбработчика(Путь)
|
||||
|
||||
СекретныйКлюч = ПолучитьUUID(9);
|
||||
Таблица = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
|
||||
СтруктураФильтра.Вставить("field", "id");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", СекретныйКлюч);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , СтруктураФильтра, , , Путь);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Пока Результат["data"].Количество() > 0 Цикл
|
||||
|
||||
СекретныйКлюч = ПолучитьUUID(9);
|
||||
СтруктураФильтра["value"] = СекретныйКлюч;
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , СтруктураФильтра, , , Путь);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СекретныйКлюч;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьUUID(Знач Длина)
|
||||
Возврат Лев(СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""), Длина);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Обработчики
|
||||
|
@@ -2149,9 +2149,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -53,7 +53,7 @@
|
||||
// Путь - Строка - Путь к файлу проекта - path
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - результат создания
|
||||
// Структура Из КлючИЗначение - Результат создания
|
||||
Функция СоздатьПроект(Знач Путь) Экспорт
|
||||
|
||||
Возврат НормализоватьПроект(Путь);
|
||||
@@ -65,16 +65,14 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Имя - Строка - Имя нового обработчика - name
|
||||
// СекретныйКлюч - Строка - Секретный ключ для URL обработчика - secret
|
||||
// ФункцияОПИ - Строка - Имя функции Открытого пакета интеграций - func
|
||||
// Метод - Строка - HTTP метод, который будет обрабатывать обработчик: GET, POST, MULTIPART - method
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - результат добавления обработчика
|
||||
Функция ДобавитьОбработчикЗапросов(Знач Проект, Знач Имя, Знач СекретныйКлюч, Знач Метод = "GET") Экспорт
|
||||
// Структура Из КлючИЗначение - Результат добавления обработчика
|
||||
Функция ДобавитьОбработчикЗапросов(Знач Проект, Знач ФункцияОПИ, Знач Метод = "GET") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(СекретныйКлюч);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ФункцияОПИ);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
@@ -85,16 +83,82 @@
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
МассивДанных = Новый Массив;
|
||||
МассивДанных.Добавить(Новый Структура("name,secret,method", Имя, СекретныйКлюч, Метод));
|
||||
СекретныйКлюч = ПолучитьУникальныйКлючОбработчика(Проект);
|
||||
|
||||
Если ТипЗнч(СекретныйКлюч) = Тип("Структура") Тогда
|
||||
СекретныйКлюч.Вставить("message", "Не удалось сформировать UID обработчика. Попробуйте еще раз");
|
||||
Возврат СекретныйКлюч;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураЗаписи = Новый Структура;
|
||||
СтруктураЗаписи.Вставить("function", ФункцияОПИ);
|
||||
СтруктураЗаписи.Вставить("id" , СекретныйКлюч);
|
||||
СтруктураЗаписи.Вставить("method" , Метод);
|
||||
СтруктураЗаписи.Вставить("active" , Истина);
|
||||
|
||||
ИмяТаблицыОбработчиков = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
Результат = OPI_SQLite.ДобавитьЗаписи(ИмяТаблицыОбработчиков, МассивДанных, , Проект);
|
||||
Результат = OPI_SQLite.ДобавитьЗаписи(ИмяТаблицыОбработчиков, СтруктураЗаписи, Ложь, Проект);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("result" , Истина);
|
||||
Результат.Вставить("key" , СекретныйКлюч);
|
||||
Результат.Вставить("url_example", "localhost:port/" + СекретныйКлюч);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить список обработчиков запросов
|
||||
// Получает список обработчиков в проекте
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Список обработчиков
|
||||
Функция ПолучитьСписокОбработчиковЗапросов(Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Проект);
|
||||
|
||||
Таблица = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , , , , Проект);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить обработчик запросов
|
||||
// Удаляет обработчик запросов из проекта
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// КлючОбработчика - Строка - Ключ обработчика - handler
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат удаления
|
||||
Функция УдалитьОбработчикЗапросов(Знач Проект, Знач КлючОбработчика) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
|
||||
|
||||
Таблица = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
|
||||
СтруктураФильтра.Вставить("field", "id");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Результат = OPI_SQLite.УдалитьЗаписи(Таблица, СтруктураФильтра, Проект);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
//
|
||||
@@ -102,7 +166,7 @@
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - результат остановки сервера
|
||||
// Структура Из КлючИЗначение - Результат остановки сервера
|
||||
Функция Запустить(Знач Порт, Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
@@ -228,6 +292,7 @@
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
УдалитьФайлы(Путь);
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
@@ -237,10 +302,10 @@
|
||||
Функция СоздатьТаблицуОбработчиков(Путь)
|
||||
|
||||
СтруктураТаблицы = Новый Структура();
|
||||
СтруктураТаблицы.Вставить("id" , "INTEGER PRIMARY KEY");
|
||||
СтруктураТаблицы.Вставить("name" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("secret", "TEXT");
|
||||
СтруктураТаблицы.Вставить("method", "TEXT");
|
||||
СтруктураТаблицы.Вставить("id" , "TEXT PRIMARY KEY NOT NULL UNIQUE");
|
||||
СтруктураТаблицы.Вставить("function", "TEXT");
|
||||
СтруктураТаблицы.Вставить("method" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("active" , "BOOLEAN");
|
||||
|
||||
ИмяТаблицыОбработчиков = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
Результат = OPI_SQLite.СоздатьТаблицу(ИмяТаблицыОбработчиков, СтруктураТаблицы, Путь);
|
||||
@@ -249,6 +314,45 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьУникальныйКлючОбработчика(Путь)
|
||||
|
||||
СекретныйКлюч = ПолучитьUUID(9);
|
||||
Таблица = КонстантноеЗначение("ТаблицаОбработчиков");
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
|
||||
СтруктураФильтра.Вставить("field", "id");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", СекретныйКлюч);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , СтруктураФильтра, , , Путь);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Пока Результат["data"].Количество() > 0 Цикл
|
||||
|
||||
СекретныйКлюч = ПолучитьUUID(9);
|
||||
СтруктураФильтра["value"] = СекретныйКлюч;
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , СтруктураФильтра, , , Путь);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СекретныйКлюч;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьUUID(Знач Длина)
|
||||
Возврат Лев(СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""), Длина);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Обработчики
|
||||
|
Reference in New Issue
Block a user