Ada 2.9.2
Fast spec-compliant URL parser
Loading...
Searching...
No Matches
ada::url Struct Reference

Generic URL struct reliant on std::string instantiation. More...

#include <url.h>

Inheritance diagram for ada::url:
ada::url_base

Public Member Functions

 url ()=default
 
 url (const url &u)=default
 
 url (url &&u) noexcept=default
 
urloperator= (url &&u) noexcept=default
 
urloperator= (const url &u)=default
 
 ~url () override=default
 
bool has_empty_hostname () const noexcept
 
bool has_port () const noexcept
 
bool has_hostname () const noexcept
 
bool has_valid_domain () const noexcept override
 
std::string to_string () const override
 
ada_really_inline std::string get_href () const noexcept
 
std::string get_origin () const noexcept override
 
std::string get_protocol () const noexcept
 
std::string get_host () const noexcept
 
std::string get_hostname () const noexcept
 
constexpr std::string_view get_pathname () const noexcept
 
ada_really_inline size_t get_pathname_length () const noexcept
 
std::string get_search () const noexcept
 
const std::string & get_username () const noexcept
 
bool set_username (std::string_view input)
 
bool set_password (std::string_view input)
 
bool set_port (std::string_view input)
 
void set_hash (std::string_view input)
 
void set_search (std::string_view input)
 
bool set_pathname (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_href (std::string_view input)
 
const std::string & get_password () const noexcept
 
std::string get_port () const noexcept
 
std::string get_hash () const noexcept
 
ada_really_inline bool has_credentials () const noexcept
 
ada_really_inline ada::url_components get_components () const noexcept
 
constexpr bool has_hash () const noexcept override
 
constexpr bool has_search () const noexcept override
 
- Public Member Functions inherited from ada::url_base
virtual ~url_base ()=default
 
ada_really_inline constexpr bool is_special () const noexcept
 

Friends

ada::url ada::parser::parse_url (std::string_view, const ada::url *)
 
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 &url) noexcept
 
ada::url ada::parser::parse_url_impl (std::string_view, const ada::url *)
 
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
 

Detailed Description

Generic URL struct reliant on std::string instantiation.

To disambiguate from a valid URL string it can also be referred to as a URL record. A URL is a struct that represents a universal identifier. Unlike the url_aggregator, the ada::url represents the different components of a parsed URL as independent std::string instances. This makes the structure heavier and more reliant on memory allocations. When getting components from the parsed URL, a new std::string is typically constructed.

See also
https://url.spec.whatwg.org/#url-representation

Definition at line 38 of file url.h.

Constructor & Destructor Documentation

◆ url() [1/3]

ada::url::url ( )
default

◆ url() [2/3]

ada::url::url ( const url & u)
default

◆ url() [3/3]

ada::url::url ( url && u)
defaultnoexcept

◆ ~url()

ada::url::~url ( )
overridedefault

Member Function Documentation

◆ get_components()

ada_really_inline ada::url_components ada::url::get_components ( ) const
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

Returns
a newly constructed component.
See also
https://github.com/servo/rust-url/blob/b65a45515c10713f6d212e6726719a020203cc98/url/src/quirks.rs#L31

Definition at line 50 of file url-inl.h.

References get_protocol(), get_search(), has_credentials(), ada::url_base::has_opaque_path, and ada::url_components::protocol_end.

◆ get_hash()

std::string ada::url::get_hash ( ) const
nodiscardnoexcept

Return U+0023 (#), followed by this's URL's fragment.

Returns
a newly constructed string representing the hash.
See also
https://url.spec.whatwg.org/#dom-url-hash

Definition at line 660 of file url.cpp.

◆ get_host()

std::string ada::url::get_host ( ) const
nodiscardnoexcept

Return url's host, serialized, followed by U+003A (:) and url's port, serialized. When there is no host, this function returns the empty string.

Returns
a newly allocated string.
See also
https://url.spec.whatwg.org/#dom-url-host

Definition at line 623 of file url.cpp.

References get_port().

Referenced by get_origin().

◆ get_hostname()

std::string ada::url::get_hostname ( ) const
nodiscardnoexcept

Return this's URL's host, serialized. When there is no host, this function returns the empty string.

Returns
a newly allocated string.
See also
https://url.spec.whatwg.org/#dom-url-hostname

Definition at line 637 of file url.cpp.

Referenced by ada::parser::parse_url_impl().

◆ get_href()

◆ get_origin()

std::string ada::url::get_origin ( ) const
nodiscardoverridevirtualnoexcept

The origin getter steps are to return the serialization of this's URL's origin. [HTML]

Returns
a newly allocated string.
See also
https://url.spec.whatwg.org/#concept-url-origin

Implements ada::url_base.

Definition at line 589 of file url.cpp.

References ada::scheme::FILE, get_host(), get_protocol(), ada::scheme::HTTP, ada::scheme::HTTPS, ada::url_base::is_special(), and ada::parse().

◆ get_password()

const std::string & ada::url::get_password ( ) const
nodiscardnoexcept

The password getter steps are to return this's URL's password.

Returns
a constant reference to the underlying string.
See also
https://url.spec.whatwg.org/#dom-url-password

Definition at line 652 of file url.cpp.

Referenced by get_href().

◆ get_pathname()

std::string_view ada::url::get_pathname ( ) const
nodiscardconstexprnoexcept

The pathname getter steps are to return the result of URL path serializing this's URL.

Returns
a newly allocated string.
See also
https://url.spec.whatwg.org/#dom-url-pathname

Definition at line 46 of file url-inl.h.

Referenced by ada::parser::parse_url_impl().

◆ get_pathname_length()

size_t ada::url::get_pathname_length ( ) const
nodiscardnoexcept

Compute the pathname length in bytes without instantiating a view or a string.

Returns
size of the pathname in bytes
See also
https://url.spec.whatwg.org/#dom-url-pathname

Definition at line 42 of file url-inl.h.

◆ get_port()

std::string ada::url::get_port ( ) const
nodiscardnoexcept

Return this's URL's port, serialized.

Returns
a newly constructed string representing the port.
See also
https://url.spec.whatwg.org/#dom-url-port

Definition at line 656 of file url.cpp.

Referenced by get_host(), and get_href().

◆ get_protocol()

std::string ada::url::get_protocol ( ) const
nodiscardnoexcept

The protocol getter steps are to return this's URL's scheme, followed by U+003A (:).

Returns
a newly allocated string.
See also
https://url.spec.whatwg.org/#dom-url-protocol

Definition at line 615 of file url.cpp.

References ada::url_base::is_special(), and ada::scheme::details::is_special_list.

Referenced by get_components(), get_href(), get_origin(), ada::parser::parse_url_impl(), and to_string().

◆ get_search()

std::string ada::url::get_search ( ) const
nodiscardnoexcept

Return U+003F (?), followed by this's URL's query.

Returns
a newly allocated string.
See also
https://url.spec.whatwg.org/#dom-url-search

Definition at line 641 of file url.cpp.

Referenced by get_components().

◆ get_username()

const std::string & ada::url::get_username ( ) const
nodiscardnoexcept

The username getter steps are to return this's URL's username.

Returns
a constant reference to the underlying string.
See also
https://url.spec.whatwg.org/#dom-url-username

Definition at line 648 of file url.cpp.

◆ has_credentials()

ada_really_inline bool ada::url::has_credentials ( ) const
nodiscardnoexcept

A URL includes credentials if its username or password is not the empty string.

Definition at line 19 of file url-inl.h.

Referenced by get_components(), get_href(), and to_string().

◆ has_empty_hostname()

bool ada::url::has_empty_hostname ( ) const
inlinenodiscardnoexcept
Returns
true if it has an host but it is the empty string

Definition at line 29 of file url-inl.h.

◆ has_hash()

bool ada::url::has_hash ( ) const
nodiscardconstexproverridevirtualnoexcept
Returns
true if the URL has a hash component

Implements ada::url_base.

Definition at line 159 of file url-inl.h.

◆ has_hostname()

bool ada::url::has_hostname ( ) const
inlinenodiscardnoexcept
Returns
true if it has a host (included an empty host)

Definition at line 35 of file url-inl.h.

◆ has_port()

ada_really_inline bool ada::url::has_port ( ) const
inlinenodiscardnoexcept
Returns
true if the URL has a (non default) port

Definition at line 22 of file url-inl.h.

◆ has_search()

bool ada::url::has_search ( ) const
nodiscardconstexproverridevirtualnoexcept
Returns
true if the URL has a search component

Implements ada::url_base.

Definition at line 163 of file url-inl.h.

Referenced by to_string().

◆ has_valid_domain()

bool ada::url::has_valid_domain ( ) const
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 582 of file url.cpp.

◆ operator=() [1/2]

url & ada::url::operator= ( const url & u)
default

◆ operator=() [2/2]

url & ada::url::operator= ( url && u)
defaultnoexcept

◆ set_hash()

void ada::url::set_hash ( std::string_view input)

This function always succeeds.

See also
https://url.spec.whatwg.org/#dom-url-hash

Definition at line 805 of file url.cpp.

References ada::character_sets::FRAGMENT_PERCENT_ENCODE.

◆ set_host()

bool ada::url::set_host ( std::string_view input)
Returns
Returns true on success.
See also
https://url.spec.whatwg.org/#dom-url-host

Definition at line 749 of file url.cpp.

◆ set_hostname()

bool ada::url::set_hostname ( std::string_view input)
Returns
Returns true on success.
See also
https://url.spec.whatwg.org/#dom-url-hostname

Definition at line 753 of file url.cpp.

◆ set_href()

bool ada::url::set_href ( std::string_view input)
See also
https://url.spec.whatwg.org/#dom-url-href

Definition at line 870 of file url.cpp.

References ada::parse().

◆ set_password()

bool ada::url::set_password ( std::string_view input)
Returns
Returns true on success.
See also
https://url.spec.whatwg.org/#dom-url-password

Definition at line 766 of file url.cpp.

References ada::character_sets::USERINFO_PERCENT_ENCODE.

◆ set_pathname()

bool ada::url::set_pathname ( std::string_view input)
Returns
Returns true on success.
See also
https://url.spec.whatwg.org/#dom-url-search

Definition at line 837 of file url.cpp.

References ada::url_base::has_opaque_path.

◆ set_port()

bool ada::url::set_port ( std::string_view input)
Returns
Returns true on success.
See also
https://url.spec.whatwg.org/#dom-url-port

Definition at line 775 of file url.cpp.

References ada::url_base::is_valid.

◆ set_protocol()

bool ada::url::set_protocol ( std::string_view input)
Returns
Returns true on success.
See also
https://url.spec.whatwg.org/#dom-url-protocol

Definition at line 846 of file url.cpp.

References ada::checkers::is_alpha().

◆ set_search()

void ada::url::set_search ( std::string_view input)

◆ set_username()

bool ada::url::set_username ( std::string_view input)
Returns
Returns true on successful operation.
See also
https://url.spec.whatwg.org/#dom-url-username

Definition at line 757 of file url.cpp.

References ada::character_sets::USERINFO_PERCENT_ENCODE.

◆ to_string()

std::string ada::url::to_string ( ) const
nodiscardoverridevirtual

Returns a JSON string representation of this URL.

Implements ada::url_base.

Definition at line 533 of file url.cpp.

References get_protocol(), has_credentials(), ada::url_base::has_opaque_path, has_search(), and ada::url_base::is_valid.

Referenced by ada::operator<<().

Friends And Related Symbol Documentation

◆ ada::helpers::strip_trailing_spaces_from_opaque_path

void ada::helpers::strip_trailing_spaces_from_opaque_path ( ada::url & url)
friend

◆ ada::parser::parse_url [1/2]

ada::url ada::parser::parse_url ( std::string_view ,
const ada::url *  )
friend

◆ ada::parser::parse_url [2/2]

ada::url_aggregator ada::parser::parse_url ( std::string_view ,
const ada::url_aggregator *  )
friend

◆ ada::parser::parse_url_impl [1/2]

ada::url ada::parser::parse_url_impl ( std::string_view ,
const ada::url *  )
friend

◆ ada::parser::parse_url_impl [2/2]

ada::url_aggregator ada::parser::parse_url_impl ( std::string_view ,
const ada::url_aggregator *  )
friend

The documentation for this struct was generated from the following files: