84 class [[nodiscard]]
URI {
99 static constexpr auto eDecoded = StringPCTEncodedFlag::eDecoded;
100 static constexpr auto ePCTEncoded = StringPCTEncodedFlag::ePCTEncoded;
120 URI (
const optional<SchemeType>& scheme,
const optional<Authority>& authority,
const String& path =
String{},
121 const optional<String>& query = nullopt,
const optional<String>& fragment = nullopt);
123 template <Characters::IConvertibleToString STRISH_TYPE>
124 URI (STRISH_TYPE&& encodedURI);
125 URI (
const URI&) =
default;
127 URI (
URI&&) noexcept = default;
131 nonvirtual
URI& operator= (const
URI&) = default;
132 nonvirtual
URI& operator= (
URI&&) noexcept = default;
146 static
URI ParseRelative (const
String& rawRelativeURL);
172 nonvirtual
bool IsRelativeReference () const;
178 nonvirtual optional<SchemeType> GetScheme () const;
188 nonvirtual
void SetScheme (const optional<SchemeType>& scheme);
189 nonvirtual
void SetScheme (const SchemeType& scheme);
195 nonvirtual optional<Authority> GetAuthority () const;
200 nonvirtual
void SetAuthority (const optional<Authority>& authority);
207 nonvirtual PortType GetPortValue () const;
215 nonvirtual
String GetPath () const;
221 nonvirtual
void SetPath (const
String& path);
228 nonvirtual
URI GetSchemeAndAuthority () const;
244 nonvirtual RETURN_TYPE GetAuthorityRelativeResource () const;
254 nonvirtual
String GetAuthorityRelativeResourceDir () const;
271 nonvirtual RETURN_VALUE GetAbsPath () const;
283 nonvirtual optional<RETURN_TYPE> GetQuery () const;
288 nonvirtual
void SetQuery (const optional<
String>& query);
289 nonvirtual
void SetQuery (const optional<
Query>& query);
295 nonvirtual optional<
String> LookupQueryArg (const
String& arg) const;
300 nonvirtual optional<
String> GetFragment () const;
305 nonvirtual
void SetFragment (const optional<
String>& query);
335 nonvirtual
URI Normalize (NormalizationStyle normalization = NormalizationStyle::eDefault)
const;
346 template <Common::IAnyOf<String,
string> T>
347 nonvirtual T
As (optional<StringPCTEncodedFlag> pctEncoded = {})
const;
350 nonvirtual
String AsString_ (optional<StringPCTEncodedFlag> pctEncoded)
const;
356 nonvirtual
explicit operator bool ()
const;
373 nonvirtual
URI Combine (
const URI& overridingURI)
const;
378 nonvirtual strong_ordering operator<=> (
const URI& rhs)
const;
383 nonvirtual
bool operator== (
const URI& rhs)
const;
386 static strong_ordering TWC_ (
const URI& lhs,
const URI& rhs);
392 nonvirtual
String ToString ()
const;
395 static void CheckValidPathForAuthority_ (
const optional<Authority>& authority,
const String& path);
398 optional<SchemeType> fScheme_;
399 optional<Authority> fAuthority_;
401 optional<String> fQuery_;
402 optional<String> fFragment_;