libzypp
13.10.6
|
Url details namespace. More...
Classes | |
class | UrlBaseData |
Internal data used by UrlBase. More... | |
struct | ViewOption |
Url::asString() view options. More... | |
class | UrlBase |
Generic Url base class. More... | |
class | UrlException |
Base class for all URL exceptions. More... | |
class | UrlDecodingException |
Thrown if the encoded string contains a NUL byte (%00). More... | |
class | UrlParsingException |
Thrown if the url or a component can't be parsed at all. More... | |
class | UrlBadComponentException |
Thrown if a url component is invalid. More... | |
class | UrlNotAllowedException |
Thrown if scheme does not allow a component. More... | |
class | UrlNotSupportedException |
Thrown if a feature e.g. More... | |
Typedefs | |
typedef std::map< std::string, std::string > | UrlConfig |
typedef ViewOption | ViewOptions |
ViewOptions is just an alias for ViewOption. More... | |
typedef std::vector< std::string > | UrlSchemes |
Vector of URL scheme names. More... | |
typedef RWCOW_pointer< UrlBase > | UrlRef |
Copy-On-Write Url reference. More... | |
typedef std::vector< std::string > | ParamVec |
A parameter vector container. More... | |
typedef std::map< std::string, std::string > | ParamMap |
A parameter map container. More... | |
Enumerations | |
enum | EEncoding { E_ENCODED, E_DECODED } |
Encoding flags. More... | |
Functions | |
std::string | encode (const std::string &str, const std::string &safe="", EEncoding eflag=E_DECODED) |
Encodes a string using URL percent encoding. More... | |
std::string | decode (const std::string &str, bool allowNUL=false) |
Decodes a URL percent encoded string. More... | |
std::string | encode_octet (const unsigned char c) |
Encode one character. More... | |
int | decode_octet (const char *hex) |
Decode one character. More... | |
void | split (ParamVec &pvec, const std::string &pstr, const std::string &psep) |
Split into a parameter vector. More... | |
void | split (ParamMap &pmap, const std::string &pstr, const std::string &psep, const std::string &vsep, EEncoding eflag=E_ENCODED) |
Split into a parameter map. More... | |
std::string | join (const ParamVec &pvec, const std::string &psep) |
Join parameter vector to a string. More... | |
std::string | join (const ParamMap &pmap, const std::string &psep, const std::string &vsep, const std::string &safe) |
Join parameter map to a string. More... | |
Url details namespace.
typedef std::map< std::string, std::string > zypp::url::UrlConfig |
Definition at line 105 of file UrlBase.cc.
typedef ViewOption zypp::url::ViewOptions |
ViewOptions is just an alias for ViewOption.
typedef std::vector<std::string> zypp::url::UrlSchemes |
typedef RWCOW_pointer<UrlBase> zypp::url::UrlRef |
typedef std::vector< std::string > zypp::url::ParamVec |
A parameter vector container.
A string vector containing splited PathParam- or Query-String. Each string in the vector is allways URL percent encoded and usually contains a "key=value" pair.
Definition at line 40 of file UrlUtils.h.
typedef std::map< std::string, std::string > zypp::url::ParamMap |
A parameter map container.
A map containing key and value pairs parsed from a PathParam- or Query-String.
Definition at line 47 of file UrlUtils.h.
enum zypp::url::EEncoding |
Encoding flags.
Enumerator | |
---|---|
E_ENCODED |
Flag to request encoded string(s). |
E_DECODED |
Flag to request decoded string(s). |
Definition at line 52 of file UrlUtils.h.
std::string zypp::url::encode | ( | const std::string & | str, |
const std::string & | safe = "" , |
||
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 (binary data). |
safe | Characters safe to skip in encoding, e.g. "/" for path names. |
eflag | If to detect and skip already encoded substrings. |
Definition at line 32 of file UrlUtils.cc.
std::string zypp::url::decode | ( | const std::string & | str, |
bool | allowNUL = false |
||
) |
Decodes a URL percent encoded 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. |
allowNUL | A flag, if "%00" (encoded '\0' ) is allowed or not. |
UrlDecodingException | if allowNUL is false and a encoded NUL byte ("%00" ) was found in str . |
Definition at line 87 of file UrlUtils.cc.
std::string zypp::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. |
Definition at line 132 of file UrlUtils.cc.
int zypp::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. Definition at line 149 of file UrlUtils.cc.
void zypp::url::split | ( | ParamVec & | pvec, |
const std::string & | pstr, | ||
const std::string & | psep | ||
) |
Split into a parameter vector.
Splits a parameter string pstr
into substrings using psep
as separator and appends the resulting substrings to pvec
.
Usual parameter separators are '&'
for Query- and '
,' for PathParam-Strings.
pvec | Reference to a result parameter vector. |
pstr | Reference to the PathParam- or Query-String to split. |
psep | Parameter separator character to split at. |
UrlNotSupportedException | if psep separator is empty. |
Definition at line 165 of file UrlUtils.cc.
void zypp::url::split | ( | ParamMap & | pmap, |
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.
pmap | Reference to a result parameter 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. |
Definition at line 199 of file UrlUtils.cc.
std::string zypp::url::join | ( | const ParamVec & | pvec, |
const std::string & | psep | ||
) |
Join parameter vector to a string.
Creates a string containing all substrings from the pvec
separated by psep
separator character. The substrings in pvec
should be already URL percent encoded and should't contain psep
characters.
Usual parameter separators are '&'
for Query- and '
,' for PathParam-Strings.
pvec | Reference to encoded parameter vector. |
psep | Parameter separator character to use. |
Definition at line 254 of file UrlUtils.cc.
std::string zypp::url::join | ( | const 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. |
Definition at line 275 of file UrlUtils.cc.