diff options
author | alexromanov <alexromanov@yandex-team.com> | 2022-12-15 15:16:46 +0300 |
---|---|---|
committer | alexromanov <alexromanov@yandex-team.com> | 2022-12-15 15:16:46 +0300 |
commit | fa3668fcff4c1ff0fd81e75a84cb1b0c8cb9f856 (patch) | |
tree | 25dbcd352b04506a6b80c5156a872095439a0175 /library/cpp/string_utils/url/url.cpp | |
parent | 56b9fdade84190c6f3f457ff268dea573f58b0d8 (diff) | |
download | ydb-fa3668fcff4c1ff0fd81e75a84cb1b0c8cb9f856.tar.gz |
Support non-http scheme in Url::GetSchemeHostPort and Url::GetSchemeHost
Diffstat (limited to 'library/cpp/string_utils/url/url.cpp')
-rw-r--r-- | library/cpp/string_utils/url/url.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/library/cpp/string_utils/url/url.cpp b/library/cpp/string_utils/url/url.cpp index 85f4ac5d69..44e6cb671a 100644 --- a/library/cpp/string_utils/url/url.cpp +++ b/library/cpp/string_utils/url/url.cpp @@ -154,6 +154,21 @@ TStringBuf GetHostAndPort(const TStringBuf url) noexcept { return GetHostAndPortImpl<true>(url); } +TStringBuf GetSchemeHost(const TStringBuf url, bool trimHttp) noexcept { + const size_t schemeSize = GetSchemePrefixSize(url); + const TStringBuf scheme = url.Head(schemeSize); + + const bool isHttp = (schemeSize == 0 || scheme == TStringBuf("http://")); + + const TStringBuf host = GetHost(url.Tail(schemeSize)); + + if (isHttp && trimHttp) { + return host; + } else { + return TStringBuf(scheme.begin(), host.end()); + } +} + TStringBuf GetSchemeHostAndPort(const TStringBuf url, bool trimHttp, bool trimDefaultPort) noexcept { const size_t schemeSize = GetSchemePrefixSize(url); const TStringBuf scheme = url.Head(schemeSize); |