Home
HTTP module

URL

An RFC 3986 based URL parser.

URL

#include <icy/http/url.h>
class URL

Defined in src/http/include/icy/http/url.h:28

An RFC 3986 based URL parser. Constructors and assignment operators will throw a SyntaxException if the URL is invalid.

List of all members

NameKindOwner
operator<<friendDeclared here
URLfunctionDeclared here
URLfunctionDeclared here
URLfunctionDeclared here
URLfunctionDeclared here
URLfunctionDeclared here
URLfunctionDeclared here
URLfunctionDeclared here
~URLfunctionDeclared here
operator=functionDeclared here
operator=functionDeclared here
operator=functionDeclared here
parsefunctionDeclared here
schemefunctionDeclared here
userInfofunctionDeclared here
hostfunctionDeclared here
portfunctionDeclared here
authorityfunctionDeclared here
pathfunctionDeclared here
pathEtcfunctionDeclared here
queryfunctionDeclared here
fragmentfunctionDeclared here
hasSchemafunctionDeclared here
hasUserInfofunctionDeclared here
hasHostfunctionDeclared here
hasPortfunctionDeclared here
hasPathfunctionDeclared here
hasQueryfunctionDeclared here
hasFragmentfunctionDeclared here
validfunctionDeclared here
strfunctionDeclared here
encodefunctionDeclared here
decodefunctionDeclared here
_bufvariableDeclared here
_schemevariableDeclared here
_userInfovariableDeclared here
_hostvariableDeclared here
_portvariableDeclared here
_pathvariableDeclared here
_queryvariableDeclared here
_fragmentvariableDeclared here
_hasPortvariableDeclared here

Friends

NameDescription
operator<< inline

operator<<

inline

friend inline std::ostream & operator<<(std::ostream & stream, const URL & url)

Defined in src/http/include/icy/http/url.h:163

Public Methods

ReturnNameDescription
URLCreates an empty URL.
URLParses the URL from a null-terminated string.
URLParses the URL from a std::string.
URLConstructs a URL from scheme and authority components.
URLConstructs a URL from scheme, authority, and path+query+fragment.
URLConstructs a URL from individual components.
URLDefaulted constructor.
URL &operator=Assigns a URL from another URL instance.
URL &operator=Assigns a URL from a null-terminated string.
URL &operator=Assigns a URL from a std::string.
boolparseParses and assigns a URL from the given string view, resetting all components first.
std::stringscheme constReturns the URL scheme (e.g. "http", "https", "ws"). Always lowercase.
std::stringuserInfo constReturns the user info component (e.g. "user:pass" from "http://user:pass@host/"). Returns an empty string if not present.
std::stringhost constReturns the host component (e.g. "example.com"). Returns an empty string if not present.
uint16_tport constReturns the port number. If no explicit port was in the URL, returns the default port for the scheme (80 for http, 443 for https), or 0 if the scheme is unknown.
std::stringauthority constReturns the authority component (userinfo@host:port). Only includes components that are present.
std::stringpath constReturns the path component (e.g. "/index.html"). Returns an empty string if not present.
std::stringpathEtc constReturns the path, query and fragment combined (e.g. "/path?q=1#frag").
std::stringquery constReturns the query string without the leading '?' (e.g. "key=value&foo=bar"). Returns an empty string if not present.
std::stringfragment constReturns the fragment identifier without the leading '#'. Returns an empty string if not present.
boolhasSchema constReturns true if the URL has a scheme component.
boolhasUserInfo constReturns true if the URL has a user info component.
boolhasHost constReturns true if the URL has a host component.
boolhasPort constReturns true if an explicit port was specified in the URL.
boolhasPath constReturns true if the URL has a path component.
boolhasQuery constReturns true if the URL has a query component.
boolhasFragment constReturns true if the URL has a fragment component.
boolvalid constReturns true if the URL is non-empty and was successfully parsed.
std::stringstr constReturns the original URL string as parsed.

URL

URL()

Defined in src/http/include/icy/http/url.h:32

Creates an empty URL.


URL

URL(const char * url)

Defined in src/http/include/icy/http/url.h:36

Parses the URL from a null-terminated string.

Parameters

  • url Null-terminated URL string to parse.

URL

URL(const std::string & url)

Defined in src/http/include/icy/http/url.h:40

Parses the URL from a std::string.

Parameters

  • url URL string to parse.

URL

URL(const std::string & scheme, const std::string & authority)

Defined in src/http/include/icy/http/url.h:45

Constructs a URL from scheme and authority components.

Parameters

  • scheme URL scheme (e.g. "http", "https").

  • authority Host and optional port (e.g. "example.com:8080").


URL

URL(const std::string & scheme, const std::string & authority, const std::string & pathEtc)

Defined in src/http/include/icy/http/url.h:51

Constructs a URL from scheme, authority, and path+query+fragment.

Parameters

  • scheme URL scheme (e.g. "http").

  • authority Host and optional port.

  • pathEtc Path, query and fragment combined (e.g. "/path?q=1#frag").


URL

URL(const std::string & scheme, const std::string & authority, const std::string & path, const std::string & query, const std::string & fragment = "")

Defined in src/http/include/icy/http/url.h:60

Constructs a URL from individual components.

Parameters

  • scheme URL scheme (e.g. "http").

  • authority Host and optional port.

  • path URL path (e.g. "/index.html").

  • query Query string without leading '?' (e.g. "key=value").

  • fragment Fragment identifier without leading '#'.


URL

URL(const URL &) = default

Defined in src/http/include/icy/http/url.h:64

Defaulted constructor.


operator=

URL & operator=(const URL & uri)

Defined in src/http/include/icy/http/url.h:70

Assigns a URL from another URL instance.

Parameters

  • uri Source URL to copy from.

Returns

Reference to this URL.


operator=

URL & operator=(const char * uri)

Defined in src/http/include/icy/http/url.h:75

Assigns a URL from a null-terminated string.

Parameters

  • uri Null-terminated URL string to parse.

Returns

Reference to this URL.


operator=

URL & operator=(const std::string & uri)

Defined in src/http/include/icy/http/url.h:80

Assigns a URL from a std::string.

Parameters

  • uri URL string to parse.

Returns

Reference to this URL.


parse

bool parse(std::string_view url, bool whiny = true)

Defined in src/http/include/icy/http/url.h:86

Parses and assigns a URL from the given string view, resetting all components first.

Parameters

  • url URL string to parse.

  • whiny If true, throws std::runtime_error on an invalid URL; otherwise returns false.

Returns

true if the URL was parsed successfully; false if invalid and whiny is false.


scheme

const

std::string scheme() const

Defined in src/http/include/icy/http/url.h:102

Returns the URL scheme (e.g. "http", "https", "ws"). Always lowercase.


userInfo

const

std::string userInfo() const

Defined in src/http/include/icy/http/url.h:106

Returns the user info component (e.g. "user:pass" from "http://user:pass@host/"). Returns an empty string if not present.


host

const

std::string host() const

Defined in src/http/include/icy/http/url.h:110

Returns the host component (e.g. "example.com"). Returns an empty string if not present.


port

const

uint16_t port() const

Defined in src/http/include/icy/http/url.h:115

Returns the port number. If no explicit port was in the URL, returns the default port for the scheme (80 for http, 443 for https), or 0 if the scheme is unknown.


authority

const

std::string authority() const

Defined in src/http/include/icy/http/url.h:119

Returns the authority component (userinfo@host:port). Only includes components that are present.


path

const

std::string path() const

Defined in src/http/include/icy/http/url.h:123

Returns the path component (e.g. "/index.html"). Returns an empty string if not present.


pathEtc

const

std::string pathEtc() const

Defined in src/http/include/icy/http/url.h:126

Returns the path, query and fragment combined (e.g. "/path?q=1#frag").


query

const

std::string query() const

Defined in src/http/include/icy/http/url.h:130

Returns the query string without the leading '?' (e.g. "key=value&foo=bar"). Returns an empty string if not present.


fragment

const

std::string fragment() const

Defined in src/http/include/icy/http/url.h:134

Returns the fragment identifier without the leading '#'. Returns an empty string if not present.


hasSchema

const

bool hasSchema() const

Defined in src/http/include/icy/http/url.h:137

Returns true if the URL has a scheme component.


hasUserInfo

const

bool hasUserInfo() const

Defined in src/http/include/icy/http/url.h:140

Returns true if the URL has a user info component.


hasHost

const

bool hasHost() const

Defined in src/http/include/icy/http/url.h:143

Returns true if the URL has a host component.


hasPort

const

bool hasPort() const

Defined in src/http/include/icy/http/url.h:146

Returns true if an explicit port was specified in the URL.


hasPath

const

bool hasPath() const

Defined in src/http/include/icy/http/url.h:149

Returns true if the URL has a path component.


hasQuery

const

bool hasQuery() const

Defined in src/http/include/icy/http/url.h:152

Returns true if the URL has a query component.


hasFragment

const

bool hasFragment() const

Defined in src/http/include/icy/http/url.h:155

Returns true if the URL has a fragment component.


valid

const

bool valid() const

Defined in src/http/include/icy/http/url.h:158

Returns true if the URL is non-empty and was successfully parsed.


str

const

std::string str() const

Defined in src/http/include/icy/http/url.h:161

Returns the original URL string as parsed.

Public Static Methods

ReturnNameDescription
std::stringencode staticPercent-encodes a string per RFC 3986, preserving unreserved characters (A-Z, a-z, 0-9, '-', '_', '.', '~'). Equivalent to JavaScript's encodeURIComponent().
std::stringdecode staticDecodes a percent-encoded string per RFC 3986. Equivalent to JavaScript's decodeURIComponent().

encode

static

static std::string encode(std::string_view str)

Defined in src/http/include/icy/http/url.h:92

Percent-encodes a string per RFC 3986, preserving unreserved characters (A-Z, a-z, 0-9, '-', '_', '.', '~'). Equivalent to JavaScript's encodeURIComponent().

Parameters

  • str Input string to encode.

Returns

Percent-encoded string.


decode

static

static std::string decode(std::string_view str)

Defined in src/http/include/icy/http/url.h:98

Decodes a percent-encoded string per RFC 3986. Equivalent to JavaScript's decodeURIComponent().

Parameters

  • str Percent-encoded input string.

Returns

Decoded string.

Protected Attributes

ReturnNameDescription
std::string_buf
std::string_scheme
std::string_userInfo
std::string_host
uint16_t_port
std::string_path
std::string_query
std::string_fragment
bool_hasPort

_buf

std::string _buf

Defined in src/http/include/icy/http/url.h:170


_scheme

std::string _scheme

Defined in src/http/include/icy/http/url.h:171


_userInfo

std::string _userInfo

Defined in src/http/include/icy/http/url.h:172


_host

std::string _host

Defined in src/http/include/icy/http/url.h:173


_port

uint16_t _port

Defined in src/http/include/icy/http/url.h:174


_path

std::string _path

Defined in src/http/include/icy/http/url.h:175


_query

std::string _query

Defined in src/http/include/icy/http/url.h:176


_fragment

std::string _fragment

Defined in src/http/include/icy/http/url.h:177


_hasPort

bool _hasPort

Defined in src/http/include/icy/http/url.h:178