1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-04-23 12:18:48 +02:00

PXY: вынос обработчика в класс

This commit is contained in:
Anton Titovets 2025-02-01 22:57:20 +03:00
parent 9fa5c429ee
commit e4ca38c5a7
11 changed files with 6753 additions and 6605 deletions

File diff suppressed because it is too large Load Diff

View File

@ -70,6 +70,10 @@
// Структура Из КлючИЗначение - Результат остановки сервера
Функция ЗапуститьПроект(Знач Порт, Знач Проект) Экспорт
Если Не OPI_Инструменты.ЭтоOneScript() Тогда
ВызватьИсключение "Данная функция доступна для вызова только в OneScript!";
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
Результат = ПроверитьСуществованиеПроекта(Проект);
@ -85,9 +89,13 @@
ПараметрыСервера = Новый Массив(1);
ПараметрыСервера[0] = Порт;
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
Обработчик = Новый("OPI_ОбработчикЗапросовПрокси");
ВебСервер.ДобавитьОбработчикЗапросов(OPI_ПроксиИнтеграций, "ОсновнаяОбработка");
Обработчик.ПутьПроекта = Проект;
Обработчик.МодульПрокси = ЭтотОбъект;
ВебСервер.ДобавитьОбработчикЗапросов(Обработчик, "ОсновнаяОбработка");
ВебСервер.Запустить();
Возврат СформироватьОтвет(Истина, "Stopped");
@ -730,32 +738,4 @@
#КонецОбласти
#Область Обработчики
Процедура ОсновнаяОбработка(Контекст, СледующийОбработчик) Экспорт
Попытка
ОбработатьЗапрос(Контекст);
Исключение
Ошибка = ОписаниеОшибки();
Контекст.Ответ.КодСостояния = 500;
Контекст.Ответ.Записать(Ошибка);
КонецПопытки
КонецПроцедуры
Процедура ОбработатьЗапрос(Контекст)
// Путь = Контекст.Запрос.Путь;
Контекст.Ответ.КодСостояния = 200;
Контекст.Ответ.Записать("Hello world!");
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -29,4 +29,5 @@
<module name="OPI_ПолучениеДанныхТестов" file="tools/Modules/OPI_ПолучениеДанныхТестов.os"/>
<module name="OPI_ПреобразованиеТипов" file="tools/Modules/OPI_ПреобразованиеТипов.os"/>
<module name="OPI_ПроксиИнтеграций" file="core/Modules/OPI_ПроксиИнтеграций.os"/>
<module name="OPI_ОбработчикЗапросовПрокси" file="tools/Classes/OPI_ОбработчикЗапросовПрокси.os"/>
</package-def>

View File

@ -16451,7 +16451,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
@ -16465,7 +16465,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря", "Bitrix24");
OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат);
КонецПроцедуры

View File

@ -0,0 +1,82 @@
// OneScript: ./OInt/tools/Classes/OPI_ОбработчикЗапросовПрокси.os
// 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:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UnusedLocalVariable-off
// BSLLS:UsingServiceTag-off
// BSLLS:NumberOfOptionalParams-off
//@skip-check module-unused-local-variable
//@skip-check method-too-many-params
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check use-non-recommended-method
//@skip-check module-accessibility-at-client
//@skip-check object-module-export-variable
#Область ОписаниеПеременных
Перем ПутьПроекта Экспорт;
Перем МодульПрокси Экспорт;
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура ОсновнаяОбработка(Контекст, СледующийОбработчик) Экспорт
Попытка
ОбработатьЗапрос(Контекст);
Исключение
Ошибка = ОписаниеОшибки();
Контекст.Ответ.КодСостояния = 500;
Контекст.Ответ.Записать(Ошибка);
КонецПопытки
КонецПроцедуры
Процедура ОбработатьЗапрос(Контекст)
Путь = Контекст.Запрос.Путь;
Путь = ?(СтрНачинаетсяС(Путь, "/") , Прав(Путь, СтрДлина(Путь - 1)), Путь);
Путь = ?(СтрЗаканчиваетсяНа(Путь, "/"), Лев(Путь, СтрДлина(Путь - 1)) , Путь);
ОписаниеОбработчика = МодульПрокси.ПолучитьОбработчикЗапросов(ПутьПроекта, Путь);
Контекст.Ответ.КодСостояния = 200;
Контекст.Ответ.Записать("Hello world!");
КонецПроцедуры
#КонецОбласти

View File

@ -70,6 +70,10 @@
// Структура Из КлючИЗначение - Результат остановки сервера
Функция ЗапуститьПроект(Знач Порт, Знач Проект) Экспорт
Если Не OPI_Инструменты.ЭтоOneScript() Тогда
ВызватьИсключение "Данная функция доступна для вызова только в OneScript!";
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
Результат = ПроверитьСуществованиеПроекта(Проект);
@ -85,9 +89,13 @@
ПараметрыСервера = Новый Массив(1);
ПараметрыСервера[0] = Порт;
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
Обработчик = Новый("OPI_ОбработчикЗапросовПрокси");
ВебСервер.ДобавитьОбработчикЗапросов(OPI_ПроксиИнтеграций, "ОсновнаяОбработка");
Обработчик.ПутьПроекта = Проект;
Обработчик.МодульПрокси = ЭтотОбъект;
ВебСервер.ДобавитьОбработчикЗапросов(Обработчик, "ОсновнаяОбработка");
ВебСервер.Запустить();
Возврат СформироватьОтвет(Истина, "Stopped");
@ -730,32 +738,4 @@
#КонецОбласти
#Область Обработчики
Процедура ОсновнаяОбработка(Контекст, СледующийОбработчик) Экспорт
Попытка
ОбработатьЗапрос(Контекст);
Исключение
Ошибка = ОписаниеОшибки();
Контекст.Ответ.КодСостояния = 500;
Контекст.Ответ.Записать(Ошибка);
КонецПопытки
КонецПроцедуры
Процедура ОбработатьЗапрос(Контекст)
// Путь = Контекст.Запрос.Путь;
Контекст.Ответ.КодСостояния = 200;
Контекст.Ответ.Записать("Hello world!");
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -16451,7 +16451,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря (хук)", "Bitrix24"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат); // SKIP
URL = ПараметрыФункции["Bitrix24_Domain"];
Токен = ПараметрыФункции["Bitrix24_Token"];
@ -16465,7 +16465,7 @@
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("bitrix24", "ПолучитьСобытиеКалендаря", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСобытиеКалендаря", "Bitrix24");
OPI_ПолучениеДанныхТестов.Проверка_БитриксИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_БитриксСоответствие(Результат);
КонецПроцедуры

View File

@ -73,4 +73,5 @@
<commonModules>CommonModule.OPI_ТестыCLI</commonModules>
<commonModules>CommonModule.OPI_ПолучениеДанныхТестов</commonModules>
<commonModules>CommonModule.OPI_ПроксиИнтеграций</commonModules>
<dataProcessors>DataProcessor.OPI_ОбработчикЗапросовПрокси</dataProcessors>
</mdclass:Configuration>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="69621c8a-c465-4b1c-8b27-9bc66e4c3376">
<producedTypes>
<objectType typeId="4b1bc5bc-1b31-4f51-8b3d-399b295851dc" valueTypeId="eac0741a-842c-41d0-b54a-b434b0a82421"/>
<managerType typeId="1644c377-1063-400a-9aea-93243361625f" valueTypeId="3417f4d1-4e65-4fd7-8d8e-80bdd1afdf00"/>
</producedTypes>
<name>OPI_ОбработчикЗапросовПрокси</name>
<synonym>
<key>ru</key>
<value>Обработчик запросов прокси</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
</mdclass:DataProcessor>

View File

@ -0,0 +1,82 @@
// OneScript: ./OInt/tools/Classes/OPI_ОбработчикЗапросовПрокси.os
// 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:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:UnusedLocalVariable-off
// BSLLS:UsingServiceTag-off
// BSLLS:NumberOfOptionalParams-off
//@skip-check module-unused-local-variable
//@skip-check method-too-many-params
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check use-non-recommended-method
//@skip-check module-accessibility-at-client
//@skip-check object-module-export-variable
#Область ОписаниеПеременных
Перем ПутьПроекта Экспорт;
Перем МодульПрокси Экспорт;
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура ОсновнаяОбработка(Контекст, СледующийОбработчик) Экспорт
Попытка
ОбработатьЗапрос(Контекст);
Исключение
Ошибка = ОписаниеОшибки();
Контекст.Ответ.КодСостояния = 500;
Контекст.Ответ.Записать(Ошибка);
КонецПопытки
КонецПроцедуры
Процедура ОбработатьЗапрос(Контекст)
Путь = Контекст.Запрос.Путь;
Путь = ?(СтрНачинаетсяС(Путь, "/") , Прав(Путь, СтрДлина(Путь - 1)), Путь);
Путь = ?(СтрЗаканчиваетсяНа(Путь, "/"), Лев(Путь, СтрДлина(Путь - 1)) , Путь);
ОписаниеОбработчика = МодульПрокси.ПолучитьОбработчикЗапросов(ПутьПроекта, Путь);
Контекст.Ответ.КодСостояния = 200;
Контекст.Ответ.Записать("Hello world!");
КонецПроцедуры
#КонецОбласти