From f6c6b9334c10ad8d86058c390d13364d28a5b68a Mon Sep 17 00:00:00 2001
From: jolex007 <jolex007@yandex-team.com>
Date: Thu, 30 Jan 2025 14:03:31 +0300
Subject: Removed dependence from libidn
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Выкашиваем зависимость от `libidn` из универсального фетчера (по запросу `ya-bin`)
commit_hash:525ba52d2ea4b45a15e726f7d9c73081fa2812ef
---
 library/cpp/http/simple/http_client.cpp | 34 ++++++++-------------------------
 1 file changed, 8 insertions(+), 26 deletions(-)

(limited to 'library/cpp/http/simple/http_client.cpp')

diff --git a/library/cpp/http/simple/http_client.cpp b/library/cpp/http/simple/http_client.cpp
index 1f3c388ff0..00145c804f 100644
--- a/library/cpp/http/simple/http_client.cpp
+++ b/library/cpp/http/simple/http_client.cpp
@@ -1,7 +1,6 @@
 #include "http_client.h"
 
 #include <library/cpp/string_utils/url/url.h>
-#include <library/cpp/uri/http_url.h>
 
 #include <util/stream/output.h>
 #include <util/string/cast.h>
@@ -325,32 +324,15 @@ void TRedirectableHttpClient::ProcessResponse(const TStringBuf relativeUrl, THtt
                 ythrow THttpRequestException(statusCode) << "Exceeds MaxRedirectCount limit, code " << statusCode << " at " << Host << relativeUrl;
             }
 
-            TVector<TString> request_url_parts, request_body_parts;
-
-            size_t splitted_index = 0;
-            for (auto& iter : StringSplitter(i->Value()).Split('/')) {
-                if (splitted_index < 3) {
-                    request_url_parts.push_back(TString(iter.Token()));
-                } else {
-                    request_body_parts.push_back(TString(iter.Token()));
-                }
-                ++splitted_index;
-            }
-
-            TString url = JoinSeq("/", request_url_parts);
-            ui16 port = 443;
-
-            THttpURL u;
-            if (THttpURL::ParsedOK == u.Parse(url)) {
-                const char* p = u.Get(THttpURL::FieldPort);
-                port = u.GetPort();
-                if (p) {
-                    url = u.PrintS(THttpURL::FlagScheme | THttpURL::FlagHost);
-                }
-            }
+            TStringBuf schemeHostPort = GetSchemeHostAndPort(i->Value());
+            TStringBuf scheme("http://");
+            TStringBuf host("unknown");
+            ui16 port = 80;
+            GetSchemeHostAndPort(schemeHostPort, scheme, host, port);
+            TStringBuf body = GetPathAndQuery(i->Value(), false);
 
             auto opts = Opts;
-            opts.Host(url);
+            opts.Host(TString(scheme) + TString(host));
             opts.Port(port);
             opts.MaxRedirectCount(opts.MaxRedirectCount() - 1);
 
@@ -358,7 +340,7 @@ void TRedirectableHttpClient::ProcessResponse(const TStringBuf relativeUrl, THtt
             if (HttpsVerification) {
                 cl.EnableVerificationForHttps();
             }
-            cl.DoGet(TString("/") + JoinSeq("/", request_body_parts), output);
+            cl.DoGet(body, output);
             return;
         }
     }
-- 
cgit v1.2.3