diff options
author | vbezhentsev <vbezhentsev@yandex-team.ru> | 2022-02-10 16:49:55 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:55 +0300 |
commit | f7e6d639f6922829aa197bf9413624d0d4ca4d66 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/string_utils | |
parent | a26ab7ed1c37272cdb769a5c3192a69c58c3adf9 (diff) | |
download | ydb-f7e6d639f6922829aa197bf9413624d0d4ca4d66.tar.gz |
Restoring authorship annotation for <vbezhentsev@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/string_utils')
-rw-r--r-- | library/cpp/string_utils/url/url.cpp | 24 | ||||
-rw-r--r-- | library/cpp/string_utils/url/url.h | 20 | ||||
-rw-r--r-- | library/cpp/string_utils/url/url_ut.cpp | 48 |
3 files changed, 46 insertions, 46 deletions
diff --git a/library/cpp/string_utils/url/url.cpp b/library/cpp/string_utils/url/url.cpp index d2926b76b8..85f4ac5d69 100644 --- a/library/cpp/string_utils/url/url.cpp +++ b/library/cpp/string_utils/url/url.cpp @@ -194,18 +194,18 @@ void SplitUrlToHostAndPath(const TStringBuf url, TString& host, TString& path) { path = pathBuf; } -void SeparateUrlFromQueryAndFragment(const TStringBuf url, TStringBuf& sanitizedUrl, TStringBuf& query, TStringBuf& fragment) { - TStringBuf urlWithoutFragment; - if (!url.TrySplit('#', urlWithoutFragment, fragment)) { - fragment = ""; - urlWithoutFragment = url; - } - if (!urlWithoutFragment.TrySplit('?', sanitizedUrl, query)) { - query = ""; - sanitizedUrl = urlWithoutFragment; - } -} - +void SeparateUrlFromQueryAndFragment(const TStringBuf url, TStringBuf& sanitizedUrl, TStringBuf& query, TStringBuf& fragment) { + TStringBuf urlWithoutFragment; + if (!url.TrySplit('#', urlWithoutFragment, fragment)) { + fragment = ""; + urlWithoutFragment = url; + } + if (!urlWithoutFragment.TrySplit('?', sanitizedUrl, query)) { + query = ""; + sanitizedUrl = urlWithoutFragment; + } +} + bool TryGetSchemeHostAndPort(const TStringBuf url, TStringBuf& scheme, TStringBuf& host, ui16& port) { const size_t schemeSize = GetSchemePrefixSize(url); if (schemeSize != 0) { diff --git a/library/cpp/string_utils/url/url.h b/library/cpp/string_utils/url/url.h index 0279c0a528..84137ccc57 100644 --- a/library/cpp/string_utils/url/url.h +++ b/library/cpp/string_utils/url/url.h @@ -83,16 +83,16 @@ void SplitUrlToHostAndPath(const TStringBuf url, TStringBuf& host, TStringBuf& p void SplitUrlToHostAndPath(const TStringBuf url, TString& host, TString& path); /** - * Separates URL into url prefix, query (aka cgi params list), and fragment (aka part after #) - * - * @param[in] url any URL - * @param[out] sanitizedUrl parsed URL without query and fragment parts - * @param[out] query parsed query - * @param[out] fragment parsed fragment - */ -void SeparateUrlFromQueryAndFragment(const TStringBuf url, TStringBuf& sanitizedUrl, TStringBuf& query, TStringBuf& fragment); - -/** + * Separates URL into url prefix, query (aka cgi params list), and fragment (aka part after #) + * + * @param[in] url any URL + * @param[out] sanitizedUrl parsed URL without query and fragment parts + * @param[out] query parsed query + * @param[out] fragment parsed fragment + */ +void SeparateUrlFromQueryAndFragment(const TStringBuf url, TStringBuf& sanitizedUrl, TStringBuf& query, TStringBuf& fragment); + +/** * Extracts scheme, host and port from URL. * * Port will be parsed from URL with checks against ui16 overflow. If URL doesn't diff --git a/library/cpp/string_utils/url/url_ut.cpp b/library/cpp/string_utils/url/url_ut.cpp index f40b3f7a96..1588013893 100644 --- a/library/cpp/string_utils/url/url_ut.cpp +++ b/library/cpp/string_utils/url/url_ut.cpp @@ -151,30 +151,30 @@ Y_UNIT_TEST_SUITE(TUtilUrlTest) { UNIT_ASSERT_STRINGS_EQUAL(path, ""); } - Y_UNIT_TEST(TestSeparateUrlFromQueryAndFragment) { - TStringBuf sanitizedUrl, query, fragment; - - SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch", sanitizedUrl, query, fragment); - UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); - UNIT_ASSERT_STRINGS_EQUAL(query, ""); - UNIT_ASSERT_STRINGS_EQUAL(fragment, ""); - - SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch?param1=val1¶m2=val2", sanitizedUrl, query, fragment); - UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); - UNIT_ASSERT_STRINGS_EQUAL(query, "param1=val1¶m2=val2"); - UNIT_ASSERT_STRINGS_EQUAL(fragment, ""); - - SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch#fragment", sanitizedUrl, query, fragment); - UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); - UNIT_ASSERT_STRINGS_EQUAL(query, ""); - UNIT_ASSERT_STRINGS_EQUAL(fragment, "fragment"); - - SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch?param1=val1¶m2=val2#fragment", sanitizedUrl, query, fragment); - UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); - UNIT_ASSERT_STRINGS_EQUAL(query, "param1=val1¶m2=val2"); - UNIT_ASSERT_STRINGS_EQUAL(fragment, "fragment"); - } - + Y_UNIT_TEST(TestSeparateUrlFromQueryAndFragment) { + TStringBuf sanitizedUrl, query, fragment; + + SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch", sanitizedUrl, query, fragment); + UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); + UNIT_ASSERT_STRINGS_EQUAL(query, ""); + UNIT_ASSERT_STRINGS_EQUAL(fragment, ""); + + SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch?param1=val1¶m2=val2", sanitizedUrl, query, fragment); + UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); + UNIT_ASSERT_STRINGS_EQUAL(query, "param1=val1¶m2=val2"); + UNIT_ASSERT_STRINGS_EQUAL(fragment, ""); + + SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch#fragment", sanitizedUrl, query, fragment); + UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); + UNIT_ASSERT_STRINGS_EQUAL(query, ""); + UNIT_ASSERT_STRINGS_EQUAL(fragment, "fragment"); + + SeparateUrlFromQueryAndFragment("https://yandex.ru/yandsearch?param1=val1¶m2=val2#fragment", sanitizedUrl, query, fragment); + UNIT_ASSERT_STRINGS_EQUAL(sanitizedUrl, "https://yandex.ru/yandsearch"); + UNIT_ASSERT_STRINGS_EQUAL(query, "param1=val1¶m2=val2"); + UNIT_ASSERT_STRINGS_EQUAL(fragment, "fragment"); + } + Y_UNIT_TEST(TestGetSchemeHostAndPort) { { // all components are present TStringBuf scheme("unknown"), host("unknown"); |