Skip to content

Commit

Permalink
Рефакторинг
Browse files Browse the repository at this point in the history
  • Loading branch information
vbondarevsky committed Nov 12, 2019
1 parent ba0ffcd commit 983ac37
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 53 deletions.
109 changes: 58 additions & 51 deletions src/internal/Классы/ПарсерURL.os
Original file line number Diff line number Diff line change
Expand Up @@ -20,52 +20,6 @@

КонецПроцедуры

Процедура РазбитьСтрокуПоРазделителю(ИзвлекаемаяЧасть, ОстальнаяЧасть, Разделитель, Инверсия = Ложь)

Индекс = СтрНайти(ОстальнаяЧасть, Разделитель);
Если Индекс Тогда
ИзвлекаемаяЧасть = Лев(ОстальнаяЧасть, Индекс - 1);
ОстальнаяЧасть = Сред(ОстальнаяЧасть, Индекс + СтрДлина(Разделитель));
Если Инверсия Тогда
ДляОбмена = ИзвлекаемаяЧасть;
ИзвлекаемаяЧасть = ОстальнаяЧасть;
ОстальнаяЧасть = ДляОбмена;
КонецЕсли;
КонецЕсли;

КонецПроцедуры

Функция РазделитьПоПервомуНайденномуРазделителю(Строка, Разделители)

МинимальныйИндекс = СтрДлина(Строка);
ПервыйРазделитель = "";

Для Каждого Разделитель Из Разделители Цикл
Индекс = СтрНайти(Строка, Разделитель);
Если Индекс = 0 Тогда
Продолжить;
КонецЕсли;
Если Индекс < МинимальныйИндекс Тогда
МинимальныйИндекс = Индекс;
ПервыйРазделитель = Разделитель;
КонецЕсли;
КонецЦикла;

Результат = Новый Массив;
Если ЗначениеЗаполнено(ПервыйРазделитель) Тогда
Результат.Добавить(Лев(Строка, МинимальныйИндекс - 1));
Результат.Добавить(Сред(Строка, МинимальныйИндекс + СтрДлина(ПервыйРазделитель)));
Результат.Добавить(ПервыйРазделитель);
Иначе
Результат.Добавить(Строка);
Результат.Добавить("");
Результат.Добавить(Неопределено);
КонецЕсли;

Возврат Результат;

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

Процедура РазобратьURL(Знач URL)

ДопустимыеСхемы = СтрРазделить("http,https", ",");
Expand All @@ -90,7 +44,7 @@
АутентификацияЧасти = СтрРазделить(АутентификацияСтрока, ":");
Аутентификация.Пользователь = АутентификацияЧасти[0];
Аутентификация.Пароль = АутентификацияЧасти[1];
КонецЕсли;
КонецЕсли;

// IPv6
РазбитьСтрокуПоРазделителю(Сервер, URL, "]");
Expand All @@ -109,13 +63,25 @@
Если ЗначениеЗаполнено(Порт) Тогда
Порт = Число(Порт);
Иначе
Порт = 0;
Порт = 0;
КонецЕсли;

РазбитьСтрокуПоРазделителю(Фрагмент, Путь, "#", Истина);

ЗаполнитьПараметрыЗапроса(Путь);

Если Не ЗначениеЗаполнено(Схема) Тогда
Схема = "http";
КонецЕсли;
Путь = ?(ЗначениеЗаполнено(Путь), Путь, "/");

КонецПроцедуры

Процедура ЗаполнитьПараметрыЗапроса(Путь)

Запрос = "";
РазбитьСтрокуПоРазделителю(Запрос, Путь, "?", Истина);

Запрос = РаскодироватьСтроку(Запрос, СпособКодированияСтроки.URLВКодировкеURL);
Для Каждого СтрокаКлючРавноПараметр Из СтрРазделить(Запрос, "&", Ложь) Цикл

Expand All @@ -142,10 +108,51 @@
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Процедура РазбитьСтрокуПоРазделителю(ИзвлекаемаяЧасть, ОстальнаяЧасть, Разделитель, Инверсия = Ложь)

Если Не ЗначениеЗаполнено(Схема) Тогда
Схема = "http";
Индекс = СтрНайти(ОстальнаяЧасть, Разделитель);
Если Индекс Тогда
ИзвлекаемаяЧасть = Лев(ОстальнаяЧасть, Индекс - 1);
ОстальнаяЧасть = Сред(ОстальнаяЧасть, Индекс + СтрДлина(Разделитель));
Если Инверсия Тогда
ДляОбмена = ИзвлекаемаяЧасть;
ИзвлекаемаяЧасть = ОстальнаяЧасть;
ОстальнаяЧасть = ДляОбмена;
КонецЕсли;
КонецЕсли;
Путь = ?(ЗначениеЗаполнено(Путь), Путь, "/");

КонецПроцедуры

Функция РазделитьПоПервомуНайденномуРазделителю(Строка, Разделители)

МинимальныйИндекс = СтрДлина(Строка);
ПервыйРазделитель = "";

Для Каждого Разделитель Из Разделители Цикл
Индекс = СтрНайти(Строка, Разделитель);
Если Индекс = 0 Тогда
Продолжить;
КонецЕсли;
Если Индекс < МинимальныйИндекс Тогда
МинимальныйИндекс = Индекс;
ПервыйРазделитель = Разделитель;
КонецЕсли;
КонецЦикла;

Результат = Новый Массив;
Если ЗначениеЗаполнено(ПервыйРазделитель) Тогда
Результат.Добавить(Лев(Строка, МинимальныйИндекс - 1));
Результат.Добавить(Сред(Строка, МинимальныйИндекс + СтрДлина(ПервыйРазделитель)));
Результат.Добавить(ПервыйРазделитель);
Иначе
Результат.Добавить(Строка);
Результат.Добавить("");
Результат.Добавить(Неопределено);
КонецЕсли;

Возврат Результат;

КонецФункции
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@

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

Процедура ЗаполнитьСписокОтфильрованнымиCookies(Cookies, СтруктураURL, Список)
Процедура ЗаполнитьСписокОтфильтрованнымиCookies(Cookies, СтруктураURL, Список)

Для Каждого Cookie Из Cookies Цикл
Если Cookie.Значение.ТолькоБезопасноеСоединение = Истина И СтруктураURL.Схема <> "https" Тогда
Expand Down Expand Up @@ -242,7 +242,7 @@
Если Не СтрНачинаетсяС(СтруктураURL.Путь, Путь.Ключ) Тогда
Продолжить;
КонецЕсли;
ЗаполнитьСписокОтфильрованнымиCookies(Путь.Значение, СтруктураURL, Результат);
ЗаполнитьСписокОтфильтрованнымиCookies(Путь.Значение, СтруктураURL, Результат);
КонецЦикла;
КонецЦикла;

Expand Down

0 comments on commit 983ac37

Please sign in to comment.