Skip to content

Commit a7e6e08

Browse files
committed
feat: Добавление новых методов
1 parent eff8021 commit a7e6e08

File tree

4 files changed

+184
-118
lines changed

4 files changed

+184
-118
lines changed

lib.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<package-def>
2-
<class name="HttpBin" file="src/HttpBin.os"/>
2+
<class name="HttpBin" file="src/core/Классы/HttpBin.os"/>
33
</package-def>

src/HttpBin.os

-98
This file was deleted.

src/core/Классы/HttpBin.os

+155
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
// BSLLS:UsingHardcodeNetworkAddress-off
2+
3+
#Использовать autumn
4+
#Использовать winow
5+
6+
Перем Поделка; // Ссылка на объект Поделка (autumn)
7+
Перем ВебСервер; // Ссылка на объект ПрикладнойВебСервер (winow)
8+
Перем НастройкиВебСервера; // Ссылка на объект Настройки (winow)
9+
Перем СлушательПорта; // Ссылка на объект СлушательПорта (winow)
10+
11+
Перем ЗапускатьВФоне; // Булево
12+
Перем ОжидатьИнициализацию; // Булево
13+
14+
#Область ПрограммныйИнтерфейс
15+
16+
// Запускает сервис
17+
//
18+
// Возвращаемое значение:
19+
// ЭтотОбъект
20+
Функция Запустить() Экспорт
21+
Если ЗапускатьВФоне Тогда
22+
ФоновыеЗадания.Выполнить(ВебСервер, "Старт");
23+
24+
Если ОжидатьИнициализацию Тогда
25+
ОжидатьЗапуск();
26+
КонецЕсли;
27+
Иначе
28+
ВебСервер.Старт();
29+
КонецЕсли;
30+
Возврат ЭтотОбъект;
31+
КонецФункции
32+
33+
// Останавливает сервис
34+
//
35+
// Возвращаемое значение:
36+
// ЭтотОбъект
37+
Функция Остановить() Экспорт
38+
ВебСервер.Стоп();
39+
Возврат ЭтотОбъект;
40+
КонецФункции
41+
42+
// Устанавливает порт сервиса
43+
//
44+
// Параметры:
45+
// Порт - Число - Номер порта
46+
//
47+
// Возвращаемое значение:
48+
// ЭтотОбъект
49+
Функция УстановитьПорт(Порт) Экспорт
50+
НастройкиВебСервера.Порт = Порт;
51+
Возврат ЭтотОбъект;
52+
КонецФункции
53+
54+
// Устанавливает хост сервиса
55+
//
56+
// Параметры:
57+
// Хост - Строка - Имя хоста / ip адрес
58+
//
59+
// Возвращаемое значение:
60+
// ЭтотОбъект
61+
Функция УстановитьХост(Хост) Экспорт
62+
НастройкиВебСервера.ИмяХоста = Хост;
63+
Возврат ЭтотОбъект;
64+
КонецФункции
65+
66+
// Запуск сервиса будет выполнен в фоновом режиме
67+
//
68+
// Параметры:
69+
// Флаг - Булево
70+
//
71+
// Возвращаемое значение:
72+
// ЭтотОбъект
73+
Функция ЗапускатьВФоне(Флаг = Истина) Экспорт
74+
ЗапускатьВФоне = Флаг;
75+
Возврат ЭтотОбъект;
76+
КонецФункции
77+
78+
// Ожидать инициализацию сервиса, запущенный в фоновом режиме
79+
//
80+
// Параметры:
81+
// Флаг - Булево
82+
//
83+
// Возвращаемое значение:
84+
// ЭтотОбъект
85+
Функция ОжидатьИнициализацию(Флаг = Истина) Экспорт
86+
ОжидатьИнициализацию = Флаг;
87+
Возврат ЭтотОбъект;
88+
КонецФункции
89+
90+
// Устанавливает задержку перед чтением сокета
91+
//
92+
// Параметры:
93+
// Задержка - Число - Задержка в миллисекундах (По умолчанию 65 мс)
94+
Процедура УстановитьЗадержкуПередЧтениемСокета(Задержка) Экспорт
95+
НастройкиВебСервера.ЗадержкаПередЧтениемСокета = Задержка;
96+
КонецПроцедуры
97+
98+
#КонецОбласти
99+
100+
#Область СлужебныеПроцедурыИФункции
101+
102+
// Cервис тестирования HTTP клиента.
103+
// По умолчанию сервис запускается фоновым заданием и с ожиданием инициализации сервиса.
104+
// Адрес по умолчанию - 127.0.0.1:3334
105+
//
106+
// Параметры:
107+
// ПоделкаОсени - Объект - Ссылка на объект Поделка (autumn)
108+
&Желудь
109+
&Характер("Компанейский")
110+
Процедура ПриСозданииОбъекта(&Пластилин("Поделка") ПоделкаОсени = Неопределено)
111+
112+
Если ПоделкаОсени = Неопределено Тогда
113+
Поделка = Новый Поделка;
114+
Поделка.ЗапуститьПриложение();
115+
Иначе
116+
Поделка = ПоделкаОсени;
117+
КонецЕсли;
118+
119+
ВебСервер = Поделка.НайтиЖелудь("ВебСервер");
120+
НастройкиВебСервера = Поделка.НайтиЖелудь("Настройки");
121+
СлушательПорта = Поделка.НайтиЖелудь("СлушательПорта");
122+
123+
НастройкиВебСервера.РазмерБуфера = 0;
124+
125+
УстановитьХост("127.0.0.1");
126+
УстановитьПорт(3334);
127+
УстановитьЗадержкуПередЧтениемСокета(65);
128+
ЗапускатьВФоне ();
129+
ОжидатьИнициализацию();
130+
131+
КонецПроцедуры
132+
133+
Процедура ОжидатьЗапуск()
134+
135+
Задержка = 100;
136+
МаксКоличествоИтераций = 10;
137+
НомерИтерации = 0;
138+
139+
Пока Не СлушательПорта.Активен() Цикл
140+
НомерИтерации = НомерИтерации + 1;
141+
Приостановить(Задержка);
142+
143+
Если НомерИтерации = МаксКоличествоИтераций Тогда
144+
Остановить();
145+
ВызватьИсключение СтрШаблон(
146+
"Не удалось запустить веб-сервер по адресу %1:%2 в течение %3 мс.",
147+
НастройкиВебСервера.ИмяХоста,
148+
НастройкиВебСервера.Порт,
149+
Задержка * МаксКоличествоИтераций);
150+
КонецЕсли;
151+
КонецЦикла;
152+
153+
КонецПроцедуры
154+
155+
#КонецОбласти

src/internal/Классы/ПомощникПодготовкиОтветов.os

+28-19
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
Перем ТекстRobots Экспорт; // Строка
44
Перем ASCII_Deny Экспорт; // Строка
5-
Перем ASCII_Teapot;
5+
Перем ASCII_Teapot; // Строка
66
Перем АдресРедиректа; // Строка
77
Перем ПоддерживаемыеМедиаТипы; // Массив из Строка
88

9-
Перем Настройки;
10-
Перем Парсеры;
9+
Перем НастройкиВебСервера; // Ссылка на объект Настройки (winow)
10+
Перем Парсеры; // Ссылка на объект Парсеры (winow)
11+
12+
#Область ПрограммныйИнтерфейс
1113

1214
Процедура ЗаполнитьОтветJson(Ответ, Данные) Экспорт
1315

@@ -113,8 +115,9 @@
113115

114116
Данные.ИмяПользователя = ПользовательИПароль.Лево;
115117
Данные.Пароль = ПользовательИПароль.Право;
116-
Исключение
117-
// Ничего не делаем
118+
Исключение
119+
Данные.ИмяПользователя = Неопределено;
120+
Данные.Пароль = Неопределено;
118121
КонецПопытки;
119122

120123
ИначеЕсли ТипАутентификации = "bearer" Тогда
@@ -208,8 +211,8 @@
208211
Функция ПолучитьURL(ПолныйПуть) Экспорт
209212

210213
Возврат "http://"
211-
+ Настройки.ИмяХоста
212-
+ ?(Настройки.Порт = 80, "", ":" + Формат(Настройки.Порт, "ЧГ="))
214+
+ НастройкиВебСервера.ИмяХоста
215+
+ ?(НастройкиВебСервера.Порт = 80, "", ":" + Формат(НастройкиВебСервера.Порт, "ЧГ="))
213216
+ ПолныйПуть;
214217

215218
КонецФункции
@@ -275,23 +278,16 @@
275278

276279
КонецФункции
277280

278-
Процедура ЗаполнитьПоддерживаемыеМедиаТипы()
279-
280-
ПоддерживаемыеМедиаТипы = Новый Массив();
281-
ПоддерживаемыеМедиаТипы.Добавить("image/webp");
282-
ПоддерживаемыеМедиаТипы.Добавить("image/svg+xml");
283-
ПоддерживаемыеМедиаТипы.Добавить("image/jpeg");
284-
ПоддерживаемыеМедиаТипы.Добавить("image/png");
285-
ПоддерживаемыеМедиаТипы.Добавить("image/*");
281+
#КонецОбласти
286282

287-
КонецПроцедуры
283+
#Область СлужебныеПроцедурыИФункции
288284

289285
&Желудь
290286
Процедура ПриСозданииОбъекта(
291-
&Пластилин("Настройки") _Настройки,
287+
&Пластилин("Настройки") Настройки,
292288
&Пластилин("Парсеры") _Парсеры)
293289

294-
Настройки = _Настройки;
290+
НастройкиВебСервера = Настройки;
295291
Парсеры = _Парсеры;
296292

297293
ЗаполнитьПоддерживаемыеМедиаТипы();
@@ -323,4 +319,17 @@
323319
| \_ _/
324320
| `""""""`";
325321

326-
КонецПроцедуры
322+
КонецПроцедуры
323+
324+
Процедура ЗаполнитьПоддерживаемыеМедиаТипы()
325+
326+
ПоддерживаемыеМедиаТипы = Новый Массив();
327+
ПоддерживаемыеМедиаТипы.Добавить("image/webp");
328+
ПоддерживаемыеМедиаТипы.Добавить("image/svg+xml");
329+
ПоддерживаемыеМедиаТипы.Добавить("image/jpeg");
330+
ПоддерживаемыеМедиаТипы.Добавить("image/png");
331+
ПоддерживаемыеМедиаТипы.Добавить("image/*");
332+
333+
КонецПроцедуры
334+
335+
#КонецОбласти

0 commit comments

Comments
 (0)