Ada 2.9.2
Fast spec-compliant URL parser
|
Lightweight URL struct. More...
#include <url_aggregator.h>
Public Member Functions | |
url_aggregator ()=default | |
url_aggregator (const url_aggregator &u)=default | |
url_aggregator (url_aggregator &&u) noexcept=default | |
url_aggregator & | operator= (url_aggregator &&u) noexcept=default |
url_aggregator & | operator= (const url_aggregator &u)=default |
~url_aggregator () override=default | |
bool | set_href (std::string_view input) |
bool | set_host (std::string_view input) |
bool | set_hostname (std::string_view input) |
bool | set_protocol (std::string_view input) |
bool | set_username (std::string_view input) |
bool | set_password (std::string_view input) |
bool | set_port (std::string_view input) |
bool | set_pathname (std::string_view input) |
void | set_search (std::string_view input) |
void | set_hash (std::string_view input) |
bool | has_valid_domain () const noexcept override |
std::string | get_origin () const noexcept override |
std::string_view | get_href () const noexcept ada_lifetime_bound |
std::string_view | get_username () const noexcept ada_lifetime_bound |
std::string_view | get_password () const noexcept ada_lifetime_bound |
std::string_view | get_port () const noexcept ada_lifetime_bound |
std::string_view | get_hash () const noexcept ada_lifetime_bound |
std::string_view | get_host () const noexcept ada_lifetime_bound |
std::string_view | get_hostname () const noexcept ada_lifetime_bound |
std::string_view | get_pathname () const noexcept ada_lifetime_bound |
ada_really_inline uint32_t | get_pathname_length () const noexcept |
std::string_view | get_search () const noexcept ada_lifetime_bound |
std::string_view | get_protocol () const noexcept ada_lifetime_bound |
ada_really_inline bool | has_credentials () const noexcept |
ada_really_inline const ada::url_components & | get_components () const noexcept |
std::string | to_string () const override |
std::string | to_diagram () const |
bool | validate () const noexcept |
bool | has_empty_hostname () const noexcept |
bool | has_hostname () const noexcept |
bool | has_non_empty_username () const noexcept |
bool | has_non_empty_password () const noexcept |
bool | has_port () const noexcept |
bool | has_password () const noexcept |
bool | has_hash () const noexcept override |
bool | has_search () const noexcept override |
void | clear_port () |
void | clear_hash () |
void | clear_search () override |
url_aggregator ()=default | |
url_aggregator (const url_aggregator &u)=default | |
url_aggregator (url_aggregator &&u) noexcept=default | |
url_aggregator & | operator= (url_aggregator &&u) noexcept=default |
url_aggregator & | operator= (const url_aggregator &u)=default |
~url_aggregator () override=default | |
bool | set_href (std::string_view input) |
bool | set_host (std::string_view input) |
bool | set_hostname (std::string_view input) |
bool | set_protocol (std::string_view input) |
bool | set_username (std::string_view input) |
bool | set_password (std::string_view input) |
bool | set_port (std::string_view input) |
bool | set_pathname (std::string_view input) |
void | set_search (std::string_view input) |
void | set_hash (std::string_view input) |
bool | has_valid_domain () const noexcept override |
std::string | get_origin () const noexcept override |
std::string_view | get_href () const noexcept ada_lifetime_bound |
std::string_view | get_username () const noexcept ada_lifetime_bound |
std::string_view | get_password () const noexcept ada_lifetime_bound |
std::string_view | get_port () const noexcept ada_lifetime_bound |
std::string_view | get_hash () const noexcept ada_lifetime_bound |
std::string_view | get_host () const noexcept ada_lifetime_bound |
std::string_view | get_hostname () const noexcept ada_lifetime_bound |
std::string_view | get_pathname () const noexcept ada_lifetime_bound |
ada_really_inline uint32_t | get_pathname_length () const noexcept |
std::string_view | get_search () const noexcept ada_lifetime_bound |
std::string_view | get_protocol () const noexcept ada_lifetime_bound |
ada_really_inline bool | has_credentials () const noexcept |
ada_really_inline const ada::url_components & | get_components () const noexcept |
std::string | to_string () const override |
std::string | to_diagram () const |
bool | validate () const noexcept |
bool | has_empty_hostname () const noexcept |
bool | has_hostname () const noexcept |
bool | has_non_empty_username () const noexcept |
bool | has_non_empty_password () const noexcept |
bool | has_port () const noexcept |
bool | has_password () const noexcept |
bool | has_hash () const noexcept override |
bool | has_search () const noexcept override |
void | clear_port () |
void | clear_hash () |
void | clear_search () override |
Public Member Functions inherited from ada::url_base | |
virtual | ~url_base ()=default |
ada_really_inline bool | is_special () const noexcept |
virtual | ~url_base ()=default |
ada_really_inline bool | is_special () const noexcept |
Friends | |
ada::url_aggregator | ada::parser::parse_url (std::string_view, const ada::url_aggregator *) |
void | ada::helpers::strip_trailing_spaces_from_opaque_path (ada::url_aggregator &url) noexcept |
ada::url_aggregator | ada::parser::parse_url_impl (std::string_view, const ada::url_aggregator *) |
ada::url_aggregator | ada::parser::parse_url_impl (std::string_view, const ada::url_aggregator *) |
ada::url_aggregator | ada::parser::parse_url (std::string_view, const ada::url_aggregator *) |
void | ada::helpers::strip_trailing_spaces_from_opaque_path (ada::url_aggregator &url) noexcept |
ada::url_aggregator | ada::parser::parse_url_impl (std::string_view, const ada::url_aggregator *) |
ada::url_aggregator | ada::parser::parse_url_impl (std::string_view, const ada::url_aggregator *) |
Additional Inherited Members | |
Public Attributes inherited from ada::url_base | |
bool | is_valid {true} |
bool | has_opaque_path {false} |
url_host_type | host_type = url_host_type::DEFAULT |
Lightweight URL struct.
The url_aggregator class aims to minimize temporary memory allocation while representing a parsed URL. Internally, it contains a single normalized URL (the href), and it makes available the components, mostly using std::string_view.
Definition at line 25 of file url_aggregator.h.
|
default |
|
default |
References url_aggregator().
|
defaultnoexcept |
References url_aggregator().
|
overridedefault |
References ada_lifetime_bound, ada_really_inline, clear_hash(), clear_port(), clear_search(), get_components(), get_hash(), get_host(), get_hostname(), get_href(), get_origin(), get_password(), get_pathname(), get_pathname_length(), get_port(), get_protocol(), get_search(), get_username(), has_credentials(), has_empty_hostname(), has_hash(), has_hostname(), has_non_empty_password(), has_non_empty_username(), has_password(), has_port(), has_search(), to_diagram(), to_string(), and validate().
|
default |
|
default |
References url_aggregator().
|
defaultnoexcept |
References url_aggregator().
|
overridedefault |
|
inline |
Definition at line 620 of file url_aggregator-inl.h.
References ADA_ASSERT_EQUAL, ADA_ASSERT_TRUE, ada_log, get_hash(), ada::url_components::omitted, to_diagram(), and validate().
Referenced by clear_hash(), and ~url_aggregator().
|
inline |
References clear_hash().
|
inline |
Definition at line 571 of file url_aggregator-inl.h.
References ADA_ASSERT_TRUE, ada_log, ada::url_components::omitted, and validate().
Referenced by clear_port(), set_port(), and ~url_aggregator().
|
inline |
References clear_port().
|
inlineoverridevirtual |
Implements ada::url_base.
Definition at line 595 of file url_aggregator-inl.h.
References ADA_ASSERT_EQUAL, ADA_ASSERT_TRUE, ada_log, get_search(), ada::url_components::omitted, to_diagram(), and validate().
Referenced by clear_search(), set_search(), and ~url_aggregator().
|
inlineoverridevirtual |
Implements ada::url_base.
References clear_search().
|
nodiscardnoexcept |
Useful for implementing efficient serialization for the URL.
https://user:pass@example.com:1234/foo/bar?baz#quux | | | | ^^^^| | | | | | | | | | ----- hash_start | | | | | | ------— search_start | | | | | ----------------- pathname_start | | | | ------------------— port | | | ----------------------- host_end | | -------------------------------— host_start | --------------------------------------- username_end ------------------------------------------— protocol_end
Inspired after servo/url
Definition at line 731 of file url_aggregator-inl.h.
Referenced by get_components(), and ~url_aggregator().
|
nodiscardnoexcept |
Useful for implementing efficient serialization for the URL.
https://user:pass@example.com:1234/foo/bar?baz#quux | | | | ^^^^| | | | | | | | | | ----- hash_start | | | | | | ------— search_start | | | | | ----------------- pathname_start | | | | ------------------— port | | | ----------------------- host_end | | -------------------------------— host_start | --------------------------------------- username_end ------------------------------------------— protocol_end
Inspired after servo/url
References ada_really_inline, and get_components().
|
nodiscardnoexcept |
Return U+0023 (#), followed by this's URL's fragment. This function does not allocate memory.
Definition at line 13863 of file ada.cpp.
References ada_lifetime_bound, ada_log, get_hash(), and ada::url_components::omitted.
Referenced by clear_hash(), get_hash(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
Return U+0023 (#), followed by this's URL's fragment. This function does not allocate memory.
References ada_lifetime_bound, and get_hash().
|
nodiscardnoexcept |
Return url's host, serialized, followed by U+003A (:) and url's port, serialized. This function does not allocate memory. When there is no host, this function returns the empty view.
Definition at line 13877 of file ada.cpp.
References ada_lifetime_bound, ada_log, and get_host().
Referenced by get_host(), get_origin(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
Return url's host, serialized, followed by U+003A (:) and url's port, serialized. This function does not allocate memory. When there is no host, this function returns the empty view.
References ada_lifetime_bound, and get_host().
|
nodiscardnoexcept |
Return this's URL's host, serialized. This function does not allocate memory. When there is no host, this function returns the empty view.
Definition at line 13896 of file ada.cpp.
References ada_lifetime_bound, ada_log, and get_hostname().
Referenced by get_hostname(), has_valid_domain(), and ~url_aggregator().
|
nodiscardnoexcept |
Return this's URL's host, serialized. This function does not allocate memory. When there is no host, this function returns the empty view.
References ada_lifetime_bound, and get_hostname().
|
inlinenodiscardnoexcept |
Return the normalized string. This function does not allocate memory. It is highly efficient.
Definition at line 847 of file url_aggregator-inl.h.
References ada_lifetime_bound, and ada_log.
Referenced by get_href(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
Return the normalized string. This function does not allocate memory. It is highly efficient.
References ada_lifetime_bound, and get_href().
|
nodiscardoverridevirtualnoexcept |
The origin getter steps are to return the serialization of this's URL's origin. [HTML]
Implements ada::url_base.
Definition at line 13806 of file ada.cpp.
References ada_log, ada::scheme::FILE, get_host(), get_origin(), get_pathname(), get_protocol(), ada::scheme::HTTP, ada::scheme::HTTPS, ada::url_base::is_special(), and ada::parse().
Referenced by get_origin(), and ~url_aggregator().
|
nodiscardoverridevirtualnoexcept |
The origin getter steps are to return the serialization of this's URL's origin. [HTML]
Implements ada::url_base.
References get_origin().
|
nodiscardnoexcept |
The password getter steps are to return this's URL's password. This function does not allocate memory.
Definition at line 13843 of file ada.cpp.
References ada_lifetime_bound, ada_log, get_password(), and has_non_empty_password().
Referenced by get_password(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
The password getter steps are to return this's URL's password. This function does not allocate memory.
References ada_lifetime_bound, and get_password().
|
nodiscardnoexcept |
The pathname getter steps are to return the result of URL path serializing this's URL. This function does not allocate memory.
Definition at line 13911 of file ada.cpp.
References ada_lifetime_bound, ada_log, get_pathname(), and ada::url_components::omitted.
Referenced by get_origin(), get_pathname(), set_pathname(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
The pathname getter steps are to return the result of URL path serializing this's URL. This function does not allocate memory.
References ada_lifetime_bound, and get_pathname().
|
nodiscardnoexcept |
Compute the pathname length in bytes without instantiating a view or a string.
Definition at line 156 of file url_aggregator-inl.h.
References ada_log, and ada::url_components::omitted.
Referenced by get_pathname_length(), and ~url_aggregator().
|
nodiscardnoexcept |
Compute the pathname length in bytes without instantiating a view or a string.
References ada_really_inline, and get_pathname_length().
|
nodiscardnoexcept |
Return this's URL's port, serialized. This function does not allocate memory.
Definition at line 13853 of file ada.cpp.
References ada_lifetime_bound, ada_log, get_port(), and ada::url_components::omitted.
Referenced by get_port(), and ~url_aggregator().
|
nodiscardnoexcept |
Return this's URL's port, serialized. This function does not allocate memory.
References ada_lifetime_bound, and get_port().
|
nodiscardnoexcept |
The protocol getter steps are to return this's URL's scheme, followed by U+003A (:). This function does not allocate memory.
Definition at line 13944 of file ada.cpp.
References ada_lifetime_bound, ada_log, and get_protocol().
Referenced by get_origin(), get_protocol(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
The protocol getter steps are to return this's URL's scheme, followed by U+003A (:). This function does not allocate memory.
References ada_lifetime_bound, and get_protocol().
|
nodiscardnoexcept |
Return U+003F (?), followed by this's URL's query. This function does not allocate memory.
Definition at line 13926 of file ada.cpp.
References ada_lifetime_bound, ada_log, get_search(), and ada::url_components::omitted.
Referenced by clear_search(), get_search(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
Return U+003F (?), followed by this's URL's query. This function does not allocate memory.
References ada_lifetime_bound, and get_search().
|
nodiscardnoexcept |
The username getter steps are to return this's URL's username. This function does not allocate memory.
Definition at line 13833 of file ada.cpp.
References ada_lifetime_bound, ada_log, get_username(), and has_non_empty_username().
Referenced by get_username(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
The username getter steps are to return this's URL's username. This function does not allocate memory.
References ada_lifetime_bound, and get_username().
|
nodiscardnoexcept |
A URL includes credentials if its username or password is not the empty string.
Definition at line 719 of file url_aggregator-inl.h.
References ada_log, ada_really_inline, has_non_empty_password(), and has_non_empty_username().
Referenced by has_credentials(), to_string(), and ~url_aggregator().
|
nodiscardnoexcept |
A URL includes credentials if its username or password is not the empty string.
References ada_really_inline, and has_credentials().
|
inlinenodiscardnoexcept |
Definition at line 791 of file url_aggregator-inl.h.
References has_hostname().
Referenced by has_empty_hostname(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
References has_empty_hostname().
|
inlinenodiscardoverridevirtualnoexcept |
Implements ada::url_base.
Definition at line 709 of file url_aggregator-inl.h.
References ada_log, and ada::url_components::omitted.
Referenced by has_hash(), and ~url_aggregator().
|
inlinenodiscardoverridevirtualnoexcept |
|
inlinenodiscardnoexcept |
Definition at line 804 of file url_aggregator-inl.h.
Referenced by has_empty_hostname(), has_hostname(), has_port(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
References has_hostname().
|
inlinenodiscardnoexcept |
Definition at line 779 of file url_aggregator-inl.h.
References ada_log.
Referenced by get_password(), has_credentials(), has_non_empty_password(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
References has_non_empty_password().
|
inlinenodiscardnoexcept |
Definition at line 774 of file url_aggregator-inl.h.
References ada_log.
Referenced by get_username(), has_credentials(), has_non_empty_username(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
References has_non_empty_username().
|
inlinenodiscardnoexcept |
Definition at line 784 of file url_aggregator-inl.h.
References ada_log.
Referenced by has_password(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
References has_password().
|
inlinenodiscardnoexcept |
Definition at line 808 of file url_aggregator-inl.h.
References ada_log, and has_hostname().
Referenced by has_port(), and ~url_aggregator().
|
inlinenodiscardnoexcept |
References has_port().
|
inlinenodiscardoverridevirtualnoexcept |
Implements ada::url_base.
Definition at line 714 of file url_aggregator-inl.h.
References ada_log, and ada::url_components::omitted.
Referenced by has_search(), and ~url_aggregator().
|
inlinenodiscardoverridevirtualnoexcept |
|
nodiscardoverridevirtualnoexcept |
Returns true if this URL has a valid domain as per RFC 1034 and corresponding specifications. Among other things, it requires that the domain string has fewer than 255 octets.
Implements ada::url_base.
Definition at line 14043 of file ada.cpp.
References get_hostname().
|
nodiscardoverridevirtualnoexcept |
Returns true if this URL has a valid domain as per RFC 1034 and corresponding specifications. Among other things, it requires that the domain string has fewer than 255 octets.
Implements ada::url_base.
|
default |
References url_aggregator().
|
default |
References url_aggregator().
|
defaultnoexcept |
References url_aggregator().
|
defaultnoexcept |
References url_aggregator().
void ada::url_aggregator::set_hash | ( | std::string_view | input | ) |
Definition at line 13574 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, ada::url_components::omitted, set_hash(), and validate().
Referenced by set_hash().
void ada::url_aggregator::set_hash | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_host | ( | std::string_view | input | ) |
Definition at line 13792 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, set_host(), and validate().
Referenced by set_host().
bool ada::url_aggregator::set_host | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_hostname | ( | std::string_view | input | ) |
Definition at line 13799 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, set_hostname(), and validate().
Referenced by set_hostname().
bool ada::url_aggregator::set_hostname | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_href | ( | std::string_view | input | ) |
Definition at line 13594 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, tl::expected< T, E >::has_value(), ada::parse< url_aggregator >(), and set_href().
Referenced by set_href().
bool ada::url_aggregator::set_href | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_password | ( | std::string_view | input | ) |
Definition at line 13439 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, ada::unicode::percent_encode_index(), set_password(), ada::character_sets::USERINFO_PERCENT_ENCODE, and validate().
Referenced by set_password().
bool ada::url_aggregator::set_password | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_pathname | ( | std::string_view | input | ) |
Definition at line 13493 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, ada::checkers::begins_with(), get_pathname(), ada::url_base::has_opaque_path, set_pathname(), and validate().
Referenced by set_pathname().
bool ada::url_aggregator::set_pathname | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_port | ( | std::string_view | input | ) |
Definition at line 13459 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, clear_port(), ada::url_base::is_valid, set_port(), and validate().
Referenced by set_port().
bool ada::url_aggregator::set_port | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_protocol | ( | std::string_view | input | ) |
Definition at line 13392 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, ada::checkers::is_alpha(), set_protocol(), and validate().
Referenced by set_protocol().
bool ada::url_aggregator::set_protocol | ( | std::string_view | input | ) |
void ada::url_aggregator::set_search | ( | std::string_view | input | ) |
Definition at line 13552 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, clear_search(), ada::url_base::is_special(), ada::character_sets::QUERY_PERCENT_ENCODE, set_search(), ada::character_sets::SPECIAL_QUERY_PERCENT_ENCODE, and validate().
Referenced by set_search().
void ada::url_aggregator::set_search | ( | std::string_view | input | ) |
bool ada::url_aggregator::set_username | ( | std::string_view | input | ) |
Definition at line 13419 of file ada.cpp.
References ADA_ASSERT_TRUE, ada_log, ada::unicode::percent_encode_index(), set_username(), ada::character_sets::USERINFO_PERCENT_ENCODE, and validate().
Referenced by set_username().
bool ada::url_aggregator::set_username | ( | std::string_view | input | ) |
|
nodiscard |
Returns a string diagram of this URL.
Definition at line 14408 of file ada.cpp.
References ada::url_base::is_valid, and ada::url_components::omitted.
Referenced by clear_hash(), clear_search(), to_diagram(), validate(), and ~url_aggregator().
|
nodiscard |
Returns a string diagram of this URL.
References to_diagram().
|
nodiscardoverridevirtual |
Returns a string representation of this URL.
Implements ada::url_base.
Definition at line 13950 of file ada.cpp.
References ada_log, get_hash(), get_host(), get_password(), get_pathname(), get_protocol(), get_search(), get_username(), has_credentials(), ada::url_base::has_opaque_path, ada::url_base::is_valid, and ada::url_components::omitted.
Referenced by ada::operator<<(), to_string(), and ~url_aggregator().
|
nodiscardoverridevirtual |
|
nodiscardnoexcept |
Verifies that the parsed URL could be valid. Useful for debugging purposes.
https://user:pass@example.com:1234/foo/bar?baz#quux | | | | ^^^^| | | | | | | | | | ----- hash_start | | | | | | ------— search_start | | | | | ----------------- pathname_start | | | | ------------------— port | | | ----------------------- host_end | | -------------------------------— host_start | --------------------------------------- username_end ------------------------------------------— protocol_end
Definition at line 14565 of file ada.cpp.
References ada_log, ada::url_base::has_opaque_path, ada::url_base::is_valid, ada::url_components::omitted, and to_diagram().
Referenced by clear_hash(), clear_port(), clear_search(), set_hash(), set_host(), set_hostname(), set_password(), set_pathname(), set_port(), set_protocol(), set_search(), set_username(), validate(), and ~url_aggregator().
|
nodiscardnoexcept |
Verifies that the parsed URL could be valid. Useful for debugging purposes.
References validate().
|
friend |
References ada::helpers::strip_trailing_spaces_from_opaque_path, and url_aggregator().
Referenced by ada::helpers::strip_trailing_spaces_from_opaque_path.
|
friend |
References ada::helpers::strip_trailing_spaces_from_opaque_path, and url_aggregator().
|
friend |
References ada::parser::parse_url, and url_aggregator().
Referenced by ada::parser::parse_url.
|
friend |
References ada::parser::parse_url, and url_aggregator().
|
friend |
References ada::parser::parse_url_impl, and url_aggregator().
Referenced by ada::parser::parse_url_impl.
|
friend |
References ada::parser::parse_url_impl, and url_aggregator().
|
friend |
References ada::parser::parse_url_impl, and url_aggregator().
|
friend |
References ada::parser::parse_url_impl, and url_aggregator().