4#ifndef _Stroika_Foundation_IO_Network_UniformResourceIdentification_h_
5#define _Stroika_Foundation_IO_Network_UniformResourceIdentification_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
14#include "Stroika/Foundation/Common/Common.h"
16#include "Stroika/Foundation/Containers/Mapping.h"
36namespace Stroika::Foundation::IO::Network::UniformResourceIdentification {
38 using Characters::String;
143 template <Characters::IConvertibleToString STRINGISH_T>
160 nonvirtual
void Validate ()
const;
203 static constexpr auto eDecoded = StringPCTEncodedFlag::eDecoded;
204 static constexpr auto ePCTEncoded = StringPCTEncodedFlag::ePCTEncoded;
227 nonvirtual
Host& operator= (
const Host&) =
default;
228 nonvirtual
Host& operator= (
Host&&)
noexcept =
default;
279 template <
typename RESULT_TYPE = String>
291 nonvirtual
bool operator== (
const Host&
rhs)
const;
304 [[
deprecated (
"Since Stroika v3.0d5 - use As<String>(StringPCTEncodedFlag::eDecoded)")]]
String AsDecoded ()
const
306 return As<String> (StringPCTEncodedFlag::eDecoded);
308 template <
typename RESULT_TYPE = String>
309 [[
deprecated (
"Since Stroika v3.0d5 - use As<String>(StringPCTEncodedFlag::ePCTEncoded)")]]
RESULT_TYPE AsEncoded ()
const
320 static String EncodeAsRawURL_ (
const InternetAddress&
ipAddr);
323 String fEncodedName_;
346 static constexpr auto eDecoded = StringPCTEncodedFlag::eDecoded;
347 static constexpr auto ePCTEncoded = StringPCTEncodedFlag::ePCTEncoded;
390 template <
typename RESULT_TYPE = String>
402 nonvirtual
bool operator== (
const UserInfo&
rhs)
const;
415 [[
deprecated (
"Since Stroika v3.0d5 - use As<String>(StringPCTEncodedFlag::eDecoded)")]]
String AsDecoded ()
const
417 return As<String> (StringPCTEncodedFlag::eDecoded);
419 template <
typename RESULT_TYPE = String>
420 [[
deprecated (
"Since Stroika v3.0d5 - use As<String>(StringPCTEncodedFlag::ePCTEncoded)")]]
RESULT_TYPE AsEncoded ()
const
427 static String ParseRaw_ (
const String&
raw);
430 static String EncodeAsRawURL_ (
const String&
decodedName);
433 String fEncodedUserInfo_;
438 String UserInfo::AsEncoded ()
const;
440 string UserInfo::AsEncoded ()
const;
452 static constexpr auto eDecoded = StringPCTEncodedFlag::eDecoded;
453 static constexpr auto ePCTEncoded = StringPCTEncodedFlag::ePCTEncoded;
495 template <
typename T>
546 nonvirtual
bool operator== (
const Authority&
rhs)
const;
584 Query (
const u8string& query);
590 nonvirtual
Query& operator= (
const Query&) =
default;
591 nonvirtual
Query& operator= (
Query&&) =
default;
597 nonvirtual
String operator() (
const u8string& idx)
const;
601 nonvirtual
bool HasField (
const u8string& idx)
const;
602 nonvirtual
bool HasField (
const String& idx)
const;
608 nonvirtual optional<String>
Lookup (
const String& idx)
const;
611 nonvirtual
void AddField (
const String& idx,
const String& value);
614 nonvirtual
void RemoveFieldIfAny (
const u8string& idx);
615 nonvirtual
void RemoveFieldIfAny (
const String& idx);
620 nonvirtual
String ComputeQueryString ()
const;
625 nonvirtual strong_ordering operator<=> (
const Query& rhs)
const;
630 nonvirtual
bool operator== (
const Query& rhs)
const;
633 static strong_ordering TWC_ (
const Query& lhs,
const Query& rhs);
650 u8string EncodeURLQueryStringField (
const String& s);
665 bool allowSubDelims =
false;
666 bool allowGenDelims =
false;
667 bool allowPChar =
false;
668 bool allowFragOrQueryChars =
false;
669 bool allowPathCharacters =
false;
679 String PCTDecode2String (
const u8string& s);
697#include "UniformResourceIdentification.inl"
String is like std::u32string, except it is much easier to use, often much more space efficient,...