| 248 | } |
| 249 | |
| 250 | void SeparateUrlFromQueryAndFragment(const TStringBuf url, TStringBuf& sanitizedUrl, TStringBuf& query, TStringBuf& fragment) { |
| 251 | TStringBuf urlWithoutFragment; |
| 252 | if (!url.TrySplit('#', urlWithoutFragment, fragment)) { |
| 253 | fragment = ""; |
| 254 | urlWithoutFragment = url; |
| 255 | } |
| 256 | if (!urlWithoutFragment.TrySplit('?', sanitizedUrl, query)) { |
| 257 | query = ""; |
| 258 | sanitizedUrl = urlWithoutFragment; |
| 259 | } |
| 260 | } |
| 261 | |
| 262 | bool TryGetSchemeHostAndPort(const TStringBuf url, TStringBuf& scheme, TStringBuf& host, ui16& port) { |
| 263 | const size_t schemeSize = GetSchemePrefixSize(url); |