Ada 2.7.8
Fast spec-compliant URL parser
Loading...
Searching...
No Matches
ada Namespace Reference

Namespaces

namespace  character_sets
 Includes the definitions for unicode character sets.
 
namespace  checkers
 Includes the definitions for validation functions.
 
namespace  helpers
 Includes the definitions for helper functions.
 
namespace  idna
 
namespace  parser
 Includes the definitions for supported parsers.
 
namespace  scheme
 Includes the scheme declarations.
 
namespace  serializers
 Includes the definitions for URL serializers.
 
namespace  unicode
 Includes the declarations for unicode operations.
 

Classes

struct  url
 Generic URL struct reliant on std::string instantiation. More...
 
struct  url_aggregator
 Lightweight URL struct. More...
 
struct  url_base
 Base class of URL implementations. More...
 
struct  url_components
 URL Component representations using offsets. More...
 
struct  url_search_params
 
struct  url_search_params_iter
 

Typedefs

template<class result_type = ada::url_aggregator>
using result = tl::expected<result_type, ada::errors>
 
typedef std::pair< std::string_view, std::string_view > key_value_view_pair
 
using url_search_params_keys_iter
 
using url_search_params_values_iter
 
using url_search_params_entries_iter
 

Enumerations

enum  { ADA_VERSION_MAJOR = 2 , ADA_VERSION_MINOR = 7 , ADA_VERSION_REVISION = 8 }
 
enum class  encoding_type { UTF8 , UTF_16LE , UTF_16BE }
 
enum class  errors { generic_error }
 
enum class  state {
  AUTHORITY , SCHEME_START , SCHEME , HOST ,
  NO_SCHEME , FRAGMENT , RELATIVE_SCHEME , RELATIVE_SLASH ,
  FILE , FILE_HOST , FILE_SLASH , PATH_OR_AUTHORITY ,
  SPECIAL_AUTHORITY_IGNORE_SLASHES , SPECIAL_AUTHORITY_SLASHES , SPECIAL_RELATIVE_OR_AUTHORITY , QUERY ,
  PATH , PATH_START , OPAQUE_PATH , PORT
}
 
enum  url_host_type : uint8_t { DEFAULT = 0 , IPV4 = 1 , IPV6 = 2 }
 
enum class  url_search_params_iter_type { KEYS , VALUES , ENTRIES }
 

Functions

void unreachable ()
 
ada_warn_unused std::string to_string (encoding_type type)
 
template<class result_type = ada::url_aggregator>
ada_warn_unused ada::result< result_type > parse (std::string_view input, const result_type *base_url=nullptr)
 
template ada::result< urlparse< url > (std::string_view input, const url *base_url)
 
template ada::result< url_aggregatorparse< url_aggregator > (std::string_view input, const url_aggregator *base_url)
 
bool can_parse (std::string_view input, const std::string_view *base_input=nullptr)
 
std::string href_from_file (std::string_view path)
 
ada_warn_unused std::string to_string (ada::state s)
 
std::ostream & operator<< (std::ostream &out, const ada::url &u)
 
std::ostream & operator<< (std::ostream &out, const ada::url_aggregator &u)
 
template<class result_type >
ada_warn_unused tl::expected< result_type, ada::errorsparse (std::string_view input, const result_type *base_url)
 

Typedef Documentation

◆ key_value_view_pair

typedef std::pair<std::string_view, std::string_view> ada::key_value_view_pair

Definition at line 24 of file url_search_params.h.

◆ result

template<class result_type = ada::url_aggregator>
using ada::result = tl::expected<result_type, ada::errors>

Definition at line 23 of file implementation.h.

◆ url_search_params_entries_iter

Initial value:
url_search_params_iter<key_value_view_pair,
url_search_params_iter_type::ENTRIES>
std::pair< std::string_view, std::string_view > key_value_view_pair

Definition at line 31 of file url_search_params.h.

◆ url_search_params_keys_iter

Initial value:
url_search_params_iter<std::string_view, url_search_params_iter_type::KEYS>

Definition at line 26 of file url_search_params.h.

◆ url_search_params_values_iter

Initial value:
url_search_params_iter<std::string_view,
url_search_params_iter_type::VALUES>

Definition at line 28 of file url_search_params.h.

Enumeration Type Documentation

◆ anonymous enum

Enumerator
ADA_VERSION_MAJOR 
ADA_VERSION_MINOR 
ADA_VERSION_REVISION 

Definition at line 12 of file ada_version.h.

◆ encoding_type

This specification defines three encodings with the same names as encoding schemes defined in the Unicode standard: UTF-8, UTF-16LE, and UTF-16BE.

See also
https://encoding.spec.whatwg.org/#encodings
Enumerator
UTF8 
UTF_16LE 
UTF_16BE 

Definition at line 19 of file encoding_type.h.

◆ errors

Enumerator
generic_error 

Definition at line 20 of file implementation.h.

◆ state

◆ url_host_type

Type of URL host as an enum.

Enumerator
DEFAULT 

Represents common URLs such as "https://www.google.com"

IPV4 

Represents ipv4 addresses such as "http://127.0.0.1"

IPV6 

Represents ipv6 addresses such as "http://[2001:db8:3333:4444:5555:6666:7777:8888]"

Definition at line 19 of file url_base.h.

◆ url_search_params_iter_type

Enumerator
KEYS 
VALUES 
ENTRIES 

Definition at line 15 of file url_search_params.h.

Function Documentation

◆ can_parse()

bool ada::can_parse ( std::string_view input,
const std::string_view * base_input = nullptr )

Verifies whether the URL strings can be parsed. The function assumes that the inputs are valid ASCII or UTF-8 strings.

See also
https://url.spec.whatwg.org/#dom-url-canparse
Returns
If URL can be parsed or not.

Definition at line 49 of file implementation.cpp.

References parse(), and parse< url_aggregator >().

Referenced by ada_can_parse(), ada_can_parse_with_base(), and LLVMFuzzerTestOneInput().

◆ href_from_file()

std::string ada::href_from_file ( std::string_view path)

Computes a href string from a file path. The function assumes that the input is a valid ASCII or UTF-8 string.

Returns
a href string (starts with file:://)

Definition at line 26 of file implementation.cpp.

References ada::scheme::FILE, and parse().

Referenced by LLVMFuzzerTestOneInput().

◆ operator<<() [1/2]

std::ostream & ada::operator<< ( std::ostream & out,
const ada::url & u )
inline

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

References parse().

◆ operator<<() [2/2]

std::ostream & ada::operator<< ( std::ostream & out,
const ada::url_aggregator & u )
inline

Definition at line 917 of file url_aggregator-inl.h.

References parse().

◆ parse() [1/2]

template<class result_type >
ada_warn_unused tl::expected< result_type, ada::errors > ada::parse ( std::string_view input,
const result_type * base_url = nullptr )

The URL parser takes a scalar value string input, with an optional null or base URL base (default null). The parser assumes the input is a valid ASCII or UTF-8 string.

Parameters
inputthe string input to analyze (must be valid ASCII or UTF-8)
base_urlthe optional URL input to use as a base url.
Returns
a parsed URL.

Definition at line 12 of file implementation.cpp.

References generic_error, and parse().

Referenced by ada_copy(), ada_parse(), ada_parse_search_params(), ada_parse_with_base(), ada_search_params_get_entries(), ada_search_params_get_keys(), ada_search_params_get_values(), ada::idna::adapt(), ada::idna::ascii_has_upper_case(), ada::idna::ascii_map(), ada::checkers::begins_with(), ada::idna::begins_with(), ada::idna::begins_with(), ada::character_sets::bit_at(), ada::unicode::broadcast(), can_parse(), ada::url_components::check_offset_consistency(), ada::url_aggregator::clear_hash(), ada::url_aggregator::clear_port(), ada::url_aggregator::clear_search(), ada::idna::compose(), ada::idna::compute_decomposition_length(), ada::idna::contains_forbidden_domain_code_point(), ada::idna::decompose(), ada::idna::decompose_nfc(), ada::idna::digit_to_char(), ada::idna::find_direction(), ada::idna::find_last_not_of_nsm(), ada::serializers::find_longest_sequence_of_ipv6_pieces(), ada::helpers::find_next_host_delimiter(), ada::helpers::find_next_host_delimiter_special(), ada::idna::find_range_index(), ada::idna::from_ascii_to_ascii(), ada::url_search_params::get(), ada::url_search_params::get_all(), ada::idna::get_ccc(), ada::url::get_components(), ada::url_aggregator::get_hash(), ada::url_aggregator::get_host(), ada::url_aggregator::get_hostname(), ada::url::get_href(), ada::url_aggregator::get_href(), ada::url::get_origin(), ada::url_aggregator::get_origin(), ada::url_aggregator::get_password(), ada::url_aggregator::get_pathname(), ada::url_aggregator::get_pathname_length(), ada::url_aggregator::get_port(), ada::url_aggregator::get_protocol(), ada::scheme::get_scheme_type(), ada::url_aggregator::get_search(), ada::scheme::get_special_port(), ada::scheme::get_special_port(), ada::helpers::get_state(), ada::url_aggregator::get_username(), ada::url_search_params::has(), ada::url_search_params::has(), ada::url_aggregator::has_credentials(), ada::url_aggregator::has_hash(), ada::checkers::has_hex_prefix(), ada::checkers::has_hex_prefix_unsafe(), ada::url_aggregator::has_non_empty_password(), ada::url_aggregator::has_non_empty_username(), ada::url_aggregator::has_password(), ada::url_aggregator::has_port(), ada::url_aggregator::has_search(), href_from_file(), ada::serializers::ipv4(), ada::serializers::ipv6(), ada::checkers::is_alpha(), ada::idna::is_ascii(), ada::idna::is_ascii(), ada::checkers::is_digit(), ada::idna::is_forbidden_domain_code_point(), ada::idna::is_label_valid(), ada::checkers::is_normalized_windows_drive_letter(), ada::idna::is_rtl_label(), ada::checkers::is_windows_drive_letter(), LLVMFuzzerTestOneInput(), ada::idna::map(), ada::idna::normalize(), operator<<(), operator<<(), parse(), ada::url_base::parse_port(), ada::parser::parse_url(), ada::unicode::percent_encode_index(), ada::idna::punycode_to_utf32(), ada::url_search_params::remove(), ada::url_search_params::remove(), ada::url_search_params::set(), ada::url::set_hash(), ada::url_aggregator::set_hash(), ada::url::set_host(), ada::url_aggregator::set_host(), ada::url::set_hostname(), ada::url_aggregator::set_hostname(), ada::url::set_href(), ada::url_aggregator::set_href(), ada::url::set_password(), ada::url_aggregator::set_password(), ada::url::set_pathname(), ada::url_aggregator::set_pathname(), ada::url::set_port(), ada::url_aggregator::set_port(), ada::url::set_protocol(), ada::url_aggregator::set_protocol(), ada::url::set_search(), ada::url_aggregator::set_search(), ada::url::set_username(), ada::url_aggregator::set_username(), ada::url_search_params::sort(), ada::idna::sort_marks(), ada::idna::to_ascii(), ada::url_aggregator::to_diagram(), ada::checkers::to_lower(), ada::url_components::to_string(), ada::url_search_params::to_string(), ada::url::to_string(), ada::url_aggregator::to_string(), ada::idna::to_unicode(), ada::helpers::trailing_zeroes(), unreachable(), ada::url_search_params::url_search_params(), ada::idna::utf32_length_from_utf8(), ada::idna::utf32_to_punycode(), ada::idna::utf32_to_utf8(), ada::idna::utf8_length_from_utf32(), ada::idna::utf8_to_utf32(), ada::url_aggregator::validate(), and ada::idna::verify_punycode().

◆ parse() [2/2]

template<class result_type = ada::url_aggregator>
ada_warn_unused ada::result< result_type > ada::parse ( std::string_view input,
const result_type * base_url = nullptr )

The URL parser takes a scalar value string input, with an optional null or base URL base (default null). The parser assumes the input is a valid ASCII or UTF-8 string.

Parameters
inputthe string input to analyze (must be valid ASCII or UTF-8)
base_urlthe optional URL input to use as a base url.
Returns
a parsed URL.

Definition at line 12 of file implementation.cpp.

References generic_error, and parse().

Referenced by ada_copy(), ada_parse(), ada_parse_search_params(), ada_parse_with_base(), ada_search_params_get_entries(), ada_search_params_get_keys(), ada_search_params_get_values(), ada::idna::adapt(), ada::idna::ascii_has_upper_case(), ada::idna::ascii_map(), ada::checkers::begins_with(), ada::idna::begins_with(), ada::idna::begins_with(), ada::character_sets::bit_at(), ada::unicode::broadcast(), can_parse(), ada::url_components::check_offset_consistency(), ada::url_aggregator::clear_hash(), ada::url_aggregator::clear_port(), ada::url_aggregator::clear_search(), ada::idna::compose(), ada::idna::compute_decomposition_length(), ada::idna::contains_forbidden_domain_code_point(), ada::idna::decompose(), ada::idna::decompose_nfc(), ada::idna::digit_to_char(), ada::idna::find_direction(), ada::idna::find_last_not_of_nsm(), ada::serializers::find_longest_sequence_of_ipv6_pieces(), ada::helpers::find_next_host_delimiter(), ada::helpers::find_next_host_delimiter_special(), ada::idna::find_range_index(), ada::idna::from_ascii_to_ascii(), ada::url_search_params::get(), ada::url_search_params::get_all(), ada::idna::get_ccc(), ada::url::get_components(), ada::url_aggregator::get_hash(), ada::url_aggregator::get_host(), ada::url_aggregator::get_hostname(), ada::url::get_href(), ada::url_aggregator::get_href(), ada::url::get_origin(), ada::url_aggregator::get_origin(), ada::url_aggregator::get_password(), ada::url_aggregator::get_pathname(), ada::url_aggregator::get_pathname_length(), ada::url_aggregator::get_port(), ada::url_aggregator::get_protocol(), ada::scheme::get_scheme_type(), ada::url_aggregator::get_search(), ada::scheme::get_special_port(), ada::scheme::get_special_port(), ada::helpers::get_state(), ada::url_aggregator::get_username(), ada::url_search_params::has(), ada::url_search_params::has(), ada::url_aggregator::has_credentials(), ada::url_aggregator::has_hash(), ada::checkers::has_hex_prefix(), ada::checkers::has_hex_prefix_unsafe(), ada::url_aggregator::has_non_empty_password(), ada::url_aggregator::has_non_empty_username(), ada::url_aggregator::has_password(), ada::url_aggregator::has_port(), ada::url_aggregator::has_search(), href_from_file(), ada::serializers::ipv4(), ada::serializers::ipv6(), ada::checkers::is_alpha(), ada::idna::is_ascii(), ada::idna::is_ascii(), ada::checkers::is_digit(), ada::idna::is_forbidden_domain_code_point(), ada::idna::is_label_valid(), ada::checkers::is_normalized_windows_drive_letter(), ada::idna::is_rtl_label(), ada::checkers::is_windows_drive_letter(), LLVMFuzzerTestOneInput(), ada::idna::map(), ada::idna::normalize(), operator<<(), operator<<(), parse(), ada::url_base::parse_port(), ada::parser::parse_url(), ada::unicode::percent_encode_index(), ada::idna::punycode_to_utf32(), ada::url_search_params::remove(), ada::url_search_params::remove(), ada::url_search_params::set(), ada::url::set_hash(), ada::url_aggregator::set_hash(), ada::url::set_host(), ada::url_aggregator::set_host(), ada::url::set_hostname(), ada::url_aggregator::set_hostname(), ada::url::set_href(), ada::url_aggregator::set_href(), ada::url::set_password(), ada::url_aggregator::set_password(), ada::url::set_pathname(), ada::url_aggregator::set_pathname(), ada::url::set_port(), ada::url_aggregator::set_port(), ada::url::set_protocol(), ada::url_aggregator::set_protocol(), ada::url::set_search(), ada::url_aggregator::set_search(), ada::url::set_username(), ada::url_aggregator::set_username(), ada::url_search_params::sort(), ada::idna::sort_marks(), ada::idna::to_ascii(), ada::url_aggregator::to_diagram(), ada::checkers::to_lower(), ada::url_components::to_string(), ada::url_search_params::to_string(), ada::url::to_string(), ada::url_aggregator::to_string(), ada::idna::to_unicode(), ada::helpers::trailing_zeroes(), unreachable(), ada::url_search_params::url_search_params(), ada::idna::utf32_length_from_utf8(), ada::idna::utf32_to_punycode(), ada::idna::utf32_to_utf8(), ada::idna::utf8_length_from_utf32(), ada::idna::utf8_to_utf32(), ada::url_aggregator::validate(), and ada::idna::verify_punycode().

◆ parse< url >()

template ada::result< url > ada::parse< url > ( std::string_view input,
const url * base_url )
extern

◆ parse< url_aggregator >()

template ada::result< url_aggregator > ada::parse< url_aggregator > ( std::string_view input,
const url_aggregator * base_url )
extern

◆ to_string() [1/2]

ada_warn_unused std::string ada::to_string ( ada::state s)

Stringify a URL state machine state.

Definition at line 791 of file helpers.cpp.

References ada::helpers::get_state().

◆ to_string() [2/2]

ada_warn_unused std::string ada::to_string ( ada::encoding_type type)

Convert a encoding_type to string.

Definition at line 62 of file implementation.cpp.

References unreachable(), UTF8, UTF_16BE, and UTF_16LE.

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

◆ unreachable()

void ada::unreachable ( )
inline

Definition at line 166 of file common_defs.h.

References parse().

Referenced by ada::parser::parse_url(), and to_string().