We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Предлагаю немного переделать метод ВызватьHTTPМетод.
ВызватьHTTPМетод
Сейчас:
Функция ВызватьHTTPМетод(Сессия, Метод, URL, ДополнительныеПараметры) КодыСостоянияHTTP = КодыСостоянияHTTP(); ПодготовленныйЗапрос = ПодготовитьЗапрос(Сессия, Метод, URL, ДополнительныеПараметры); НастройкиПодключения = НастройкиПодключения(Метод, URL, ДополнительныеПараметры); Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения); Перенаправление = 0; Пока Перенаправление < Сессия.МаксимальноеКоличествоПеренаправлений Цикл Если Не НастройкиПодключения.РазрешитьПеренаправление ИЛИ Не Ответ.ЭтоРедирект Тогда Возврат Ответ; КонецЕсли; НовыйURL = СформироватьНовыйURLПриПеренаправлении(Ответ); ПодготовленныйЗапрос.URL = КодироватьСтроку(НовыйURL, СпособКодированияСтроки.URLВКодировкеURL); НовыйHTTPЗапрос = Новый HTTPЗапрос(СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено)); ПереопределитьМетод(ПодготовленныйЗапрос, Ответ); Если Ответ.КодСостояния <> КодыСостоянияHTTP.ВременноеПеренаправление_307 И Ответ.КодСостояния <> КодыСостоянияHTTP.ПостоянноеПеренаправление_308 Тогда УдалитьЗаголовки(ПодготовленныйЗапрос.Заголовки, "content-length,content-type,transfer-encoding"); НовыйHTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки; Иначе ИсходныйПоток = ПодготовленныйЗапрос.HTTPЗапрос.ПолучитьТелоКакПоток(); ИсходныйПоток.КопироватьВ(НовыйHTTPЗапрос.ПолучитьТелоКакПоток()); КонецЕсли; ПодготовленныйЗапрос.HTTPЗапрос = НовыйHTTPЗапрос; УдалитьЗаголовки(ПодготовленныйЗапрос.Заголовки, "cookies"); ПодготовленныйЗапрос.Cookies = ОбъединитьCookies(Сессия.Cookies, ПодготовленныйЗапрос.Cookies); ПодготовитьCookies(ПодготовленныйЗапрос); // INFO: по хорошему аутентификацию нужно привести к новых параметрам, но пока будем игнорировать. Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения); Перенаправление = Перенаправление + 1; КонецЦикла; ВызватьИсключение("СлишкомМногоПеренаправлений"); КонецФункции
Результат рефакторинга:
Функция ВызватьHTTPМетод(Сессия, Метод, URL, ДополнительныеПараметры) ПодготовленныйЗапрос = ПодготовитьЗапрос(Сессия, Метод, URL, ДополнительныеПараметры); НастройкиПодключения = НастройкиПодключения(Метод, URL, ДополнительныеПараметры); Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения); Если НастройкиПодключения.РазрешитьПеренаправление И Ответ.ЭтоРедирект Тогда Ответ = ПеренаправитьЗапрос(Сессия, НастройкиПодключения, ПодготовленныйЗапрос, Ответ); КонецЕсли; Возврат Ответ; КонецФункции Функция ПеренаправитьЗапрос(Сессия, НастройкиПодключения, ПодготовленныйЗапрос, ПеренаправленныйОтвет) Перенаправление = 0; Пока ПеренаправленныйОтвет.ЭтоРедирект Цикл ПодготовитьЗапросДляРедиректа(Сессия, ПодготовленныйЗапрос, ПеренаправленныйОтвет); ПеренаправленныйОтвет = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения); Перенаправление = Перенаправление + 1; Если Перенаправление > Сессия.МаксимальноеКоличествоПеренаправлений Тогда ВызватьИсключение("СлишкомМногоПеренаправлений"); КонецЕсли; КонецЦикла; Возврат ПеренаправленныйОтвет; КонецФункции Процедура ПодготовитьЗапросДляРедиректа(Сессия, ПодготовленныйЗапрос, ПеренаправленныйОтвет) КодыСостоянияHTTP = КодыСостоянияHTTP(); НовыйURL = СформироватьНовыйURLПриПеренаправлении(ПеренаправленныйОтвет); ПодготовленныйЗапрос.URL = КодироватьСтроку(НовыйURL, СпособКодированияСтроки.URLВКодировкеURL); НовыйHTTPЗапрос = Новый HTTPЗапрос(СобратьАдресРесурса(РазобратьURL(НовыйURL), Неопределено)); ПереопределитьМетод(ПодготовленныйЗапрос, ПеренаправленныйОтвет); Если ПеренаправленныйОтвет.КодСостояния <> КодыСостоянияHTTP.ВременноеПеренаправление_307 И ПеренаправленныйОтвет.КодСостояния <> КодыСостоянияHTTP.ПостоянноеПеренаправление_308 Тогда УдалитьЗаголовки(ПодготовленныйЗапрос.Заголовки, "content-length,content-type,transfer-encoding"); НовыйHTTPЗапрос.Заголовки = ПодготовленныйЗапрос.Заголовки; Иначе ИсходныйПоток = ПодготовленныйЗапрос.HTTPЗапрос.ПолучитьТелоКакПоток(); ИсходныйПоток.КопироватьВ(НовыйHTTPЗапрос.ПолучитьТелоКакПоток()); КонецЕсли; ПодготовленныйЗапрос.HTTPЗапрос = НовыйHTTPЗапрос; УдалитьЗаголовки(ПодготовленныйЗапрос.Заголовки, "cookies"); ПодготовленныйЗапрос.Cookies = ОбъединитьCookies(Сессия.Cookies, ПодготовленныйЗапрос.Cookies); ПодготовитьCookies(ПодготовленныйЗапрос); КонецПроцедуры
The text was updated successfully, but these errors were encountered:
Выглядит разумно, жду PR
Sorry, something went wrong.
refactor: Рефакторинг метода ВызватьHTTPМетод
885ef52
vbondarevsky#86
Изменения добавлены к PR #85
slaxxals
No branches or pull requests
Предлагаю немного переделать метод
ВызватьHTTPМетод
.Сейчас:
Результат рефакторинга:
The text was updated successfully, but these errors were encountered: