zypp::url Namespace Reference

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.
typedef std::vector< std::string > UrlSchemes
 Vector of URL scheme names.
typedef RWCOW_pointer< UrlBaseUrlRef
 Copy-On-Write Url reference.
typedef std::vector< std::string > ParamVec
 A parameter vector container.
typedef std::map< std::string,
std::string > 
ParamMap
 A parameter map container.

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.
std::string decode (const std::string &str, bool allowNUL=false)
 Decodes a URL percent encoded string.
std::string encode_octet (const unsigned char c)
 Encode one character.
int decode_octet (const char *hex)
 Decode one character.
void split (ParamVec &pvec, const std::string &pstr, const std::string &psep)
 Split into a parameter vector.
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.
std::string join (const ParamVec &pvec, const std::string &psep)
 Join parameter vector to a string.
std::string join (const ParamMap &pmap, const std::string &psep, const std::string &vsep, const std::string &safe)
 Join parameter map to a string.

Detailed Description

Url details namespace.


Typedef Documentation

typedef std::map< std::string, std::string > zypp::url::UrlConfig

Definition at line 105 of file UrlBase.cc.

ViewOptions is just an alias for ViewOption.

Definition at line 243 of file UrlBase.h.

typedef std::vector<std::string> zypp::url::UrlSchemes

Vector of URL scheme names.

Definition at line 250 of file UrlBase.h.

Copy-On-Write Url reference.

Definition at line 1073 of file UrlBase.h.

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.


Enumeration Type Documentation

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.


Function Documentation

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.

   zypp::url::encode("foo%bar@localhost", "", E_ENCODED);

With eflag set to E_DECODED, the "%" character would be encoded as well. The complete encoded string would be "foo%25bar%40localhost".

Parameters:
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.
Returns:
A percent encoded string.

Referenced by zypp::media::MediaISO::MediaISO(), zypp::url::UrlBase::setFragment(), zypp::url::UrlBase::setHost(), zypp::url::UrlBase::setPassword(), zypp::url::UrlBase::setPathName(), and zypp::url::UrlBase::setUsername().

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 "@?=&%".

Parameters:
str A string to decode.
allowNUL A flag, if "%00" (encoded '\0') is allowed or not.
Returns:
A decoded strig (may contain binary data).
Exceptions:
UrlDecodingException if allowNUL is false and a encoded NUL byte ("%00") was found in str.

Referenced by zypp::url::UrlBase::getFragment(), zypp::url::UrlBase::getHost(), zypp::url::UrlBase::getPassword(), zypp::url::UrlBase::getPathName(), zypp::url::UrlBase::getUsername(), zypp::url::UrlBase::isValidHost(), and zypp::url::UrlBase::setHost().

std::string zypp::url::encode_octet ( const unsigned char  c  ) 

Encode one character.

Encode the specified character c into its "%<hex><hex>" representation.

Parameters:
c A character to encode.
Returns:
A percent encoded representation of the character, e.g. 20 for a ' ' (space).
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:

   char *str = "%40";
   char *pct = strchr(str, '%');
   int   chr = pct ? decode_octet(pct+1) : -1;
      // chr is set to the '@' ASCII character now.
Parameters:
hex Pointer to two hex characters representing the character value in percent-encoded strings.
Returns:
The value (0-255) encoded in the hex characters or -1 if hex does not point to two hexadecimal characters.
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.

Parameters:
pvec Reference to a result parameter vector.
pstr Reference to the PathParam- or Query-String to split.
psep Parameter separator character to split at.
Exceptions:
UrlNotSupportedException if psep separator is empty.

Referenced by zypp::url::UrlBase::getPathParamsMap(), zypp::url::UrlBase::getPathParamsVec(), zypp::url::UrlBase::getQueryStringMap(), and zypp::url::UrlBase::getQueryStringVec().

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.

Parameters:
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.
Exceptions:
UrlNotSupportedException if psep or vsep separator is empty.
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.

Parameters:
pvec Reference to encoded parameter vector.
psep Parameter separator character to use.
Returns:
A parameter string.

Referenced by zypp::url::UrlBase::setPathParamsMap(), zypp::url::UrlBase::setPathParamsVec(), zypp::url::UrlBase::setQueryStringMap(), and zypp::url::UrlBase::setQueryStringVec().

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.

Parameters:
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.
Returns:
A URL percent-encoded parameter string.
Exceptions:
UrlNotSupportedException if psep or vsep separator is empty.
Generated on Fri Mar 2 09:46:18 2012 for libzypp by  doxygen 1.6.3