Skip to content

Commit 7b8ffdd

Browse files
committed
fix: Исправлен случай для эндпоинта status, когда один код состояния с весом
1 parent 88d5769 commit 7b8ffdd

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

src/app/HttpBin_ОсновнойКонтрол.os

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,9 @@
192192

193193
Если Не СтрНайти(КодыСостояний, ",") Тогда
194194

195-
КодСостояния = Помощник.ВЧисло(КодыСостояний);
195+
РазделеннаяСтрока = Помощник.РазделитьСтроку(КодыСостояний, ":");
196+
КодСостояния = Помощник.ВЧисло(РазделеннаяСтрока.Лево);
197+
196198
Если КодСостояния = 0 Тогда
197199
Ответ.УстановитьСостояние(КодыСостоянияHTTP.НеверныйЗапрос_400);
198200
Ответ.ТелоТекст = "Invalid status code";
@@ -203,22 +205,22 @@
203205

204206
ВзвешенныйСписок = Новый Массив();
205207
Для каждого Строка Из СтрРазделить(КодыСостояний, ",") Цикл
206-
Подстроки = СтрРазделить(Строка, ":");
207-
Если Подстроки.Количество() = 1 Тогда
208-
КодСостояния = Строка;
209-
Вес = 1;
210-
Иначе
211-
КодСостояния = Подстроки[0];
212-
Вес = Помощник.ВЧисло(Подстроки[1]);
213-
КонецЕсли;
214208

215-
КодСостояния = Помощник.ВЧисло(КодСостояния);
209+
РазделеннаяСтрока = Помощник.РазделитьСтроку(Строка, ":");
210+
211+
КодСостояния = Помощник.ВЧисло(РазделеннаяСтрока.Лево);
216212
Если КодСостояния = 0 Тогда
217213
Ответ.УстановитьСостояние(КодыСостоянияHTTP.НеверныйЗапрос_400);
218214
Ответ.ТелоТекст = "Invalid status code";
219215
Возврат;
220216
КонецЕсли;
221217

218+
Если ПустаяСтрока(РазделеннаяСтрока.Право) Тогда
219+
Вес = 1;
220+
Иначе
221+
Вес = Помощник.ВЧисло(РазделеннаяСтрока.Право);
222+
КонецЕсли;
223+
222224
ВзвешенныйСписок.Добавить(Новый Структура("Значение, Вес", КодСостояния, Вес));
223225
КонецЦикла;
224226

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

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,32 @@
354354

355355
КонецФункции
356356

357+
// Разделяет строку по разделителю
358+
//
359+
// Параметры:
360+
// Строка - Строка
361+
// Разделитель - Строка
362+
//
363+
// Возвращаемое значение:
364+
// Структура:
365+
// * Лево - Строка
366+
// * Право - Строка
367+
Функция РазделитьСтроку(Строка, Разделитель) Экспорт
368+
369+
Результат = Новый Структура("Лево, Право", "", "");
370+
ПозицияРазделителя = СтрНайти(Строка, Разделитель);
371+
372+
Если ПозицияРазделителя = 0 Тогда
373+
Результат.Лево = Строка;
374+
Иначе
375+
Результат.Лево = Лев(Строка, ПозицияРазделителя - 1);
376+
Результат.Право = Сред(Строка, ПозицияРазделителя + СтрДлина(Разделитель));
377+
КонецЕсли;
378+
379+
Возврат Результат;
380+
381+
КонецФункции
382+
357383
#КонецОбласти
358384

359385
#Область СлужебныеПроцедурыИФункции
@@ -548,22 +574,6 @@
548574

549575
КонецФункции
550576

551-
Функция РазделитьСтроку(Строка, Разделитель)
552-
553-
Результат = Новый Структура("Лево, Право", "", "");
554-
ПозицияРазделителя = СтрНайти(Строка, Разделитель);
555-
556-
Если ПозицияРазделителя = 0 Тогда
557-
Результат.Лево = Строка;
558-
Иначе
559-
Результат.Лево = Лев(Строка, ПозицияРазделителя - 1);
560-
Результат.Право = Сред(Строка, ПозицияРазделителя + СтрДлина(Разделитель));
561-
КонецЕсли;
562-
563-
Возврат Результат;
564-
565-
КонецФункции
566-
567577
Функция ЗаголовкиДляJson(Заголовки)
568578

569579
Если ЭтоНативныйВебСервер Тогда

0 commit comments

Comments
 (0)