libcamgm
|
Classes | |
class | Url |
Url manipulation class. More... | |
struct | UrlAuthority |
class | UrlBase |
Generic Url base class. More... | |
struct | UrlComponents |
struct | ViewOptions |
Typedefs | |
typedef RWCOW_pointer< UrlBase > | UrlRef |
Copy-On-Write Url reference. More... | |
typedef std::map< std::string, std::string > | ParamMap |
Enumerations | |
enum | EEncoding { E_ENCODED, E_DECODED } |
Functions | |
CA_MGM_DECLARE_EXCEPTION (Url) | |
CA_MGM_DECLARE_EXCEPTION2 (UrlParsing, UrlException) | |
CA_MGM_DECLARE_EXCEPTION2 (UrlDecoding, UrlException) | |
CA_MGM_DECLARE_EXCEPTION2 (UrlBadComponent, UrlException) | |
CA_MGM_DECLARE_EXCEPTION2 (UrlNotAllowed, UrlException) | |
CA_MGM_DECLARE_EXCEPTION2 (UrlNotSupported, UrlException) | |
std::string | encode (const std::string &str, const std::string &safe="", ca_mgm::url::EEncoding eflag=E_DECODED) |
std::string | encode_buf (const ca_mgm::ByteBuffer &buf, const std::string &safe="", ca_mgm::url::EEncoding eflag=E_DECODED) |
std::string | decode (const std::string &str) |
ca_mgm::ByteBuffer | decode_buf (const std::string &str, bool allowNUL) |
std::string | encode_octet (const unsigned char c) |
int | decode_octet (const char *hex) |
std::vector< std::string > | split (const std::string &pstr, const std::string &psep) |
ca_mgm::url::ParamMap | split (const std::string &pstr, const std::string &psep, const std::string &vsep, EEncoding eflag=E_ENCODED) |
std::string | join (const std::vector< std::string > &parr, const std::string &psep) |
std::string | join (const ca_mgm::url::ParamMap &pmap, const std::string &psep, const std::string &vsep, const std::string &safe) |
UrlComponents | parse_url_string (const std::string &url) |
UrlAuthority | parse_url_authority (const std::string &authority) |
typedef std::map<std::string,std::string> ca_mgm::url::ParamMap |
A parameter map container. A string map, containing key and value pairs parsed from a PathParam- or Query-String.
typedef RWCOW_pointer<UrlBase> ca_mgm::url::UrlRef |
Copy-On-Write Url reference.
ca_mgm::url::CA_MGM_DECLARE_EXCEPTION | ( | Url | ) |
ca_mgm::url::CA_MGM_DECLARE_EXCEPTION2 | ( | UrlParsing | , |
UrlException | |||
) |
ca_mgm::url::CA_MGM_DECLARE_EXCEPTION2 | ( | UrlDecoding | , |
UrlException | |||
) |
ca_mgm::url::CA_MGM_DECLARE_EXCEPTION2 | ( | UrlBadComponent | , |
UrlException | |||
) |
ca_mgm::url::CA_MGM_DECLARE_EXCEPTION2 | ( | UrlNotAllowed | , |
UrlException | |||
) |
ca_mgm::url::CA_MGM_DECLARE_EXCEPTION2 | ( | UrlNotSupported | , |
UrlException | |||
) |
std::string ca_mgm::url::decode | ( | const std::string & | str | ) |
Decodes a percent-encoded string into a string.
Replaces all occurences of "%<hex><hex>"
in the str
string with the character encoded using the two hexadecimal digits that follows the "%" character.
For example, the encoded string "%40%3F%3D%26%25" will be decoded to "@?=&%".
str | A string to decode. |
UrlDecodingException | if str contains encoded NUL byte. |
ca_mgm::ByteBuffer ca_mgm::url::decode_buf | ( | const std::string & | str, |
bool | allowNUL | ||
) |
Decodes a percent-encoded string into a byte buffer.
Replaces all occurences of "%<hex><hex>"
in the str
string with the character encoded using the two hexadecimal digits that follows the "%" character.
For example, the encoded string "%40%3F%3D%26%25" will be decoded to "@?=&%".
str | An encoded string to decode. |
allowNUL | A flag, if "%00" (encoded '\0' ) is allowed. |
UrlDecodingException | if allowNUL str contains encoded NUL byte ("%00" ). |
int ca_mgm::url::decode_octet | ( | const char * | hex | ) |
Decode one character.
Decode the hex
parameter pointing to (at least) two hexadecimal digits into its character value and return it.
Example:
hex | Pointer to two hex characters representing the character value in percent-encoded strings. |
hex
characters or -1 if hex
does not point to two hexadecimal characters. std::string ca_mgm::url::encode | ( | const std::string & | str, |
const std::string & | safe = "" , |
||
ca_mgm::url::EEncoding | eflag = E_DECODED |
||
) |
Encodes a string using URL percent encoding.
By default, all characters except of "a-zA-Z0-9_.-" will be encoded. Additional characters from the set ":/?#[]@!$&'()*+,;=", that are safe for a URL compoent without encoding, can be specified in the safe
argument.
If the eflag
parameter is set to E_ENCODED, then already encoded substrings will be detected and not encoded a second time.
The following function call will encode the "@" character as "%40", but skip encoding of the "%" character, because the eflag
is set to E_ENCODED and "%ba" is detected as a valid encoded character.
With eflag
set to E_DECODED, the "%" character would be encoded as well. The complete encoded string would be "foo%25bar%40localhost".
str | A string to encode. |
safe | Characters safe to skip in encoding, e.g. "/" for path names. |
eflag | If to detect and skip already encoded substrings. |
std::string ca_mgm::url::encode_buf | ( | const ca_mgm::ByteBuffer & | buf, |
const std::string & | safe = "" , |
||
ca_mgm::url::EEncoding | eflag = E_DECODED |
||
) |
Encodes a byte buffer using URL percent encoding.
For more informations, see encode() function.
buf | A string buffer to encode (binary data). |
safe | Characters safe to skip in encoding, e.g. "/" for path names. |
eflag | If to detect and skip already encoded substrings. |
std::string ca_mgm::url::encode_octet | ( | const unsigned char | c | ) |
Encode one character.
Encode the specified character c
into its "%<hex><hex>"
representation.
c | A character to encode. |
std::string ca_mgm::url::join | ( | const std::vector< std::string > & | parr, |
const std::string & | psep | ||
) |
Join parameter array into a string.
Creates a string containing all substrings from the parr
separated by psep
separator character. The substrings in parr
should be already URL percent encoded and should't contain psep
characters.
Usual parameter separators are '&'
for Query- and '
,' for PathParam-Strings.
parr | Reference to encoded parameter array. |
psep | Parameter separator character to use. |
std::string ca_mgm::url::join | ( | const ca_mgm::url::ParamMap & | pmap, |
const std::string & | psep, | ||
const std::string & | vsep, | ||
const std::string & | safe | ||
) |
Join parameter map to a string.
Creates a string containing all parameter key-value pairs from the parameter map pmap
, that will be joined using the psep
character and the parameter key is separated from the parameter value using the vsep
character. Both, key and value will be automatically encoded.
Usual parameter separators are '&'
for Query- and '
,' for PathParam-Strings. A usual parameter-value separator is '='
for both, Query- and PathParam-Strings.
See encode() function from details about the safe
characters.
pmap | Reference to a parameter map. |
psep | Separator character to use between key-value pairs. |
vsep | Separator character to use between keys and values. |
safe | List of characters to accept without encoding. |
UrlNotSupportedException | if psep or vsep separator is empty. |
UrlAuthority ca_mgm::url::parse_url_authority | ( | const std::string & | authority | ) |
UrlComponents ca_mgm::url::parse_url_string | ( | const std::string & | url | ) |
std::vector<std::string> ca_mgm::url::split | ( | const std::string & | pstr, |
const std::string & | psep | ||
) |
Split into a parameter array.
Splits a parameter string pstr
at psep
characters into an array of substrings.
Usual parameter separators are '&'
for Query- and '
,' for PathParams-Strings.
pstr | Reference to the PathParam- or Query-String to split. |
psep | Parameter separator character to split at. |
UrlNotSupportedException | if psep separator is empty. |
ca_mgm::url::ParamMap ca_mgm::url::split | ( | const std::string & | pstr, |
const std::string & | psep, | ||
const std::string & | vsep, | ||
EEncoding | eflag = E_ENCODED |
||
) |
Split into a parameter map.
Splits a parameter string pstr
into substrings using psep
as separator and then, each substring into key and value pair using vsep
as separator between parameter key and value and adds them to the parameter map pmap
.
If a parameter substring doesn't contain any value separator vsep
, the substring is used as a parameter key and value is set to an empty string.
Usual parameter separators are '&'
for Query- and '
,' for PathParam-Strings. A usual parameter-value separator is '='
for both, Query- and PathParam-Strings.
If the encoding flag eflag
is set to E_DECODED
, then the key and values are dedcoded before they are stored in the map.
pstr | Reference to the PathParam- or Query-String to split. |
psep | Separator character to split key-value pairs. |
vsep | Separator character to split key and value. |
eflag | Flag if the key and value strings should be URL percent decoded before they're stored in the map. |
UrlNotSupportedException | if psep or vsep separator is empty. |