Ada 2.7.7
Fast spec-compliant URL parser
|
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 = 7 } |
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< url > | parse< url > (std::string_view input, const url *base_url) |
template ada::result< url_aggregator > | parse< 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::errors > | parse (std::string_view input, const result_type *base_url) |
typedef std::pair<std::string_view, std::string_view> ada::key_value_view_pair |
Definition at line 24 of file url_search_params.h.
using ada::result = tl::expected<result_type, ada::errors> |
Definition at line 23 of file implementation.h.
Definition at line 31 of file url_search_params.h.
Definition at line 26 of file url_search_params.h.
Definition at line 28 of file url_search_params.h.
Enumerator | |
---|---|
ADA_VERSION_MAJOR | |
ADA_VERSION_MINOR | |
ADA_VERSION_REVISION |
Definition at line 12 of file ada_version.h.
|
strong |
This specification defines three encodings with the same names as encoding schemes defined in the Unicode standard: UTF-8, UTF-16LE, and UTF-16BE.
Enumerator | |
---|---|
UTF8 | |
UTF_16LE | |
UTF_16BE |
Definition at line 19 of file encoding_type.h.
|
strong |
Enumerator | |
---|---|
generic_error |
Definition at line 20 of file implementation.h.
|
strong |
Type of URL host as an enum.
Definition at line 19 of file url_base.h.
Enumerator | |
---|---|
KEYS | |
VALUES | |
ENTRIES |
Definition at line 15 of file url_search_params.h.
Verifies whether the URL strings can be parsed. The function assumes that the inputs are valid ASCII or UTF-8 strings.
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().
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.
Definition at line 26 of file implementation.cpp.
References ada::scheme::FILE, and parse().
Referenced by LLVMFuzzerTestOneInput().
|
inline |
|
inline |
Definition at line 917 of file url_aggregator-inl.h.
References parse().
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.
input | the string input to analyze (must be valid ASCII or UTF-8) |
base_url | the optional URL input to use as a base 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().
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.
input | the string input to analyze (must be valid ASCII or UTF-8) |
base_url | the optional URL input to use as a base 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().
|
extern |
|
extern |
Referenced by can_parse(), and ada::url_aggregator::set_href().
ada_warn_unused std::string ada::to_string | ( | ada::state | s | ) |
Stringify a URL state machine state.
Definition at line 793 of file helpers.cpp.
References ada::helpers::get_state().
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().
|
inline |
Definition at line 166 of file common_defs.h.
References parse().
Referenced by ada::parser::parse_url(), and to_string().