PTLib
Version 2.10.11
|
This class describes a Universal Resource Locator. More...
#include <url.h>
Public Member Functions | |
PURL () | |
Construct a new URL object from the URL string. More... | |
PURL (const char *cstr, const char *defaultScheme="http") | |
Construct a new URL object from the URL string. More... | |
PURL (const PString &str, const char *defaultScheme="http") | |
Construct a new URL object from the URL string. More... | |
PURL (const PFilePath &path) | |
Construct a new URL object from the file path. More... | |
PURL (const PURL &other) | |
PURL & | operator= (const PURL &other) |
PBoolean | LegacyParse (const PString &url, const PURLLegacyScheme *schemeInfo) |
PString | LegacyAsString (PURL::UrlFormat fmt, const PURLLegacyScheme *schemeInfo) const |
Overrides from class PObject | |
virtual Comparison | Compare (const PObject &obj) const |
Compare the two URLs and return their relative rank. More... | |
virtual PINDEX | HashFunction () const |
This function yields a hash value required by the PDictionary class. More... | |
virtual void | PrintOn (ostream &strm) const |
Output the contents of the URL to the stream as a string. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the URL from the stream. More... | |
![]() | |
virtual | ~PObject () |
virtual PObject * | Clone () const |
Create a copy of the class on the heap. More... | |
virtual const char * | GetClass (unsigned ancestor=0) const |
Get the current dynamic type of the object instance. More... | |
PBoolean | IsClass (const char *cls) const |
virtual PBoolean | InternalIsDescendant (const char *clsName) const |
Determine if the dynamic type of the current instance is a descendent of the specified class. More... | |
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
Determine the byte wise comparison of two objects. More... | |
bool | operator== (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator!= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator< (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator> (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator<= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator>= (const PObject &obj) const |
Compare the two objects. More... | |
Protected Member Functions | |
void | CopyContents (const PURL &other) |
virtual PBoolean | InternalParse (const char *cstr, const char *defaultScheme) |
void | Recalculate () |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
Protected Attributes | |
PString | urlString |
PCaselessString | scheme |
PString | username |
PString | password |
PCaselessString | hostname |
WORD | port |
PBoolean | portSupplied |
PBoolean | relativePath |
port was supplied in string input More... | |
PStringArray | path |
PStringOptions | paramVars |
PString | fragment |
PStringOptions | queryVars |
PString | m_contents |
New functions for class. | |
enum | UrlFormat { FullURL, PathOnly, URIOnly, HostPortOnly } |
Print/String output representation formats. More... | |
enum | TranslationType { LoginTranslation, PathTranslation, QueryTranslation, ParameterTranslation, QuotedParameterTranslation } |
Type for translation of strings to URL format,. More... | |
PBoolean | Parse (const char *cstr, const char *defaultScheme=NULL) |
Parse the URL string into the fields in the object instance. More... | |
PBoolean | Parse (const PString &str, const char *defaultScheme=NULL) |
Parse the URL string into the fields in the object instance. More... | |
PString | AsString (UrlFormat fmt=FullURL) const |
Convert the URL object into its string representation. More... | |
operator PString () const | |
PFilePath | AsFilePath () const |
Get the "file:" URL as a file path. More... | |
const PCaselessString & | GetScheme () const |
Get the scheme field of the URL. More... | |
void | SetScheme (const PString &scheme) |
Set the scheme field of the URL. More... | |
const PString & | GetUserName () const |
Get the username field of the URL. More... | |
void | SetUserName (const PString &username) |
Set the username field of the URL. More... | |
const PString & | GetPassword () const |
Get the password field of the URL. More... | |
void | SetPassword (const PString &password) |
Set the password field of the URL. More... | |
const PCaselessString & | GetHostName () const |
Get the hostname field of the URL. More... | |
void | SetHostName (const PString &hostname) |
Set the hostname field of the URL. More... | |
WORD | GetPort () const |
Get the port field of the URL. More... | |
void | SetPort (WORD newPort) |
Set the port field in the URL. More... | |
PBoolean | GetPortSupplied () const |
Get if explicit port is specified. More... | |
PBoolean | GetRelativePath () const |
Get if path is relative or absolute. More... | |
PString | GetPathStr () const |
Get the path field of the URL as a string. More... | |
void | SetPathStr (const PString &pathStr) |
Set the path field of the URL as a string. More... | |
const PStringArray & | GetPath () const |
Get the path field of the URL as a string array. More... | |
void | SetPath (const PStringArray &path) |
Set the path field of the URL as a string array. More... | |
void | AppendPath (const PString &segment) |
Append segment to the path field of the URL. More... | |
PString | GetParameters () const |
Get the parameter (;) field of the URL. More... | |
void | SetParameters (const PString ¶meters) |
Set the parameter (;) field of the URL. More... | |
const PStringOptions & | GetParamVars () const |
Get the parameter (;) field(s) of the URL as a string dictionary. More... | |
void | SetParamVars (const PStringToString ¶mVars) |
Set the parameter (;) field(s) of the URL as a string dictionary. More... | |
void | SetParamVar (const PString &key, const PString &data, bool emptyDataDeletes=true) |
Set the parameter (;) field of the URL as a string dictionary. More... | |
const PString & | GetFragment () const |
Get the fragment (#) field of the URL. More... | |
PString | GetQuery () const |
Get the Query (?) field of the URL as a string. More... | |
void | SetQuery (const PString &query) |
Set the Query (?) field of the URL as a string. More... | |
const PStringOptions & | GetQueryVars () const |
Get the Query (?) field of the URL as a string dictionary. More... | |
void | SetQueryVars (const PStringToString &queryVars) |
Set the Query (?) field(s) of the URL as a string dictionary. More... | |
void | SetQueryVar (const PString &key, const PString &data) |
Set the Query (?) field of the URL as a string dictionary. More... | |
const PString & | GetContents () const |
Get the contents of URL, data left after all elemetns are parsed out. More... | |
void | SetContents (const PString &str) |
Set the contents of URL, data left after all elemetns are parsed out. More... | |
PBoolean | IsEmpty () const |
Return true if the URL is an empty string. More... | |
bool | LoadResource (PString &data, const PString &requiredContentType=PString::Empty()) const |
Get the resource the URL is pointing at. More... | |
bool | LoadResource (PBYTEArray &data, const PString &requiredContentType=PString::Empty()) const |
bool | OpenBrowser () const |
Open the URL in a browser. More... | |
static PString | TranslateString (const PString &str, TranslationType type) |
Translate a string from general form to one that can be included into a URL. More... | |
static PString | UntranslateString (const PString &str, TranslationType type) |
Untranslate a string from a form that was included into a URL into a normal string. More... | |
static void | SplitVars (const PString &str, PStringToString &vars, char sep1=';', char sep2='=', TranslationType type=ParameterTranslation) |
Split a string to a dictionary of names and values. More... | |
static void | SplitQueryVars (const PString &queryStr, PStringToString &queryVars) |
Split a string in &= form to a dictionary of names and values. More... | |
static void | OutputVars (ostream &strm, const PStringToString &vars, char sep0=';', char sep1=';', char sep2='=', TranslationType type=ParameterTranslation) |
Construct string from a dictionary using separators. More... | |
static bool | OpenBrowser (const PString &url) |
Additional Inherited Members | |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
![]() | |
static const char * | Class () |
Get the name of the class as a C string. More... | |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
This class describes a Universal Resource Locator.
This is the desciption of a resource location as used by the World Wide Web and the PHTTPSocket
class.
Type for translation of strings to URL format,.
enum PURL::UrlFormat |
PURL::PURL | ( | ) |
Construct a new URL object from the URL string.
PURL::PURL | ( | const char * | cstr, |
const char * | defaultScheme = "http" |
||
) |
Construct a new URL object from the URL string.
cstr | C string representation of the URL. |
defaultScheme | Default scheme for URL |
PURL::PURL | ( | const PString & | str, |
const char * | defaultScheme = "http" |
||
) |
Construct a new URL object from the URL string.
str | String representation of the URL. |
defaultScheme | Default scheme for URL |
PURL::PURL | ( | const PFilePath & | path | ) |
Construct a new URL object from the file path.
path | File path to turn into a "file:" URL. |
PURL::PURL | ( | const PURL & | other | ) |
void PURL::AppendPath | ( | const PString & | segment | ) |
Append segment to the path field of the URL.
Referenced by GetPath().
PFilePath PURL::AsFilePath | ( | ) | const |
Get the "file:" URL as a file path.
If the URL is not a "file:" URL then returns an empty string.
Referenced by operator PString().
Convert the URL object into its string representation.
The parameter indicates whether a full or partial representation os to be produced.
fmt | The type of string to be returned. |
Referenced by OpenBrowser(), and operator PString().
|
virtual |
Compare the two URLs and return their relative rank.
LessThan
, EqualTo
or GreaterThan
according to the relative rank of the objects. obj | Object to compare against. |
Reimplemented from PObject.
|
protected |
Referenced by OpenBrowser().
|
inline |
Get the contents of URL, data left after all elemetns are parsed out.
References m_contents, and SetContents().
|
inline |
Get the fragment (#) field of the URL.
References fragment, GetQuery(), and SetQuery().
|
inline |
Get the hostname field of the URL.
References hostname, and SetHostName().
PString PURL::GetParameters | ( | ) | const |
Get the parameter (;) field of the URL.
Referenced by GetPath().
|
inline |
Get the parameter (;) field(s) of the URL as a string dictionary.
Note the values have already been translated using UntranslateString
References paramVars, SetParamVar(), and SetParamVars().
|
inline |
Get the password field of the URL.
References password, and SetPassword().
|
inline |
Get the path field of the URL as a string array.
References AppendPath(), GetParameters(), path, SetParameters(), and SetPath().
PString PURL::GetPathStr | ( | ) | const |
Get the path field of the URL as a string.
Referenced by GetRelativePath().
|
inline |
Get if explicit port is specified.
References portSupplied.
PString PURL::GetQuery | ( | ) | const |
Get the Query (?) field of the URL as a string.
Referenced by GetFragment().
|
inline |
Get the Query (?) field of the URL as a string dictionary.
Note the values have already been translated using UntranslateString
References queryVars, SetQueryVar(), and SetQueryVars().
|
inline |
Get if path is relative or absolute.
References GetPathStr(), relativePath, and SetPathStr().
|
inline |
Get the scheme field of the URL.
References scheme, and SetScheme().
|
inline |
Get the username field of the URL.
References SetUserName(), and username.
|
virtual |
This function yields a hash value required by the PDictionary
class.
A descendent class that is required to be the key of a dictionary should override this function. The precise values returned is dependent on the semantics of the class. For example, the PString
class overrides it to provide a hash function for distinguishing text strings.
The default behaviour is to return the value zero.
Reimplemented from PObject.
|
protectedvirtual |
cstr | URL as a string to parse. |
defaultScheme | Default scheme for URL |
Referenced by OpenBrowser(), and Parse().
|
inline |
Return true if the URL is an empty string.
References PString::Empty(), PString::IsEmpty(), LoadResource(), and urlString.
PString PURL::LegacyAsString | ( | PURL::UrlFormat | fmt, |
const PURLLegacyScheme * | schemeInfo | ||
) | const |
Referenced by PURLLegacyScheme::AsString(), and OpenBrowser().
PBoolean PURL::LegacyParse | ( | const PString & | url, |
const PURLLegacyScheme * | schemeInfo | ||
) |
Referenced by OpenBrowser(), and PURLLegacyScheme::Parse().
bool PURL::LoadResource | ( | PString & | data, |
const PString & | requiredContentType = PString::Empty() |
||
) | const |
Get the resource the URL is pointing at.
The data returned is obtained according to the scheme and the factory PURLLoaderFactory.
data | Resource data as a string |
requiredContentType | Expected content type where applicable |
Referenced by IsEmpty().
bool PURL::LoadResource | ( | PBYTEArray & | data, |
const PString & | requiredContentType = PString::Empty() |
||
) | const |
data | Resource data as a binary blob |
requiredContentType | Expected content type where applicable |
|
inline |
Open the URL in a browser.
References AsString(), CopyContents(), InternalParse(), LegacyAsString(), LegacyParse(), OpenBrowser(), and Recalculate().
Referenced by OpenBrowser().
|
static |
url | URL to open |
|
inline |
References AsFilePath(), and AsString().
|
static |
Construct string from a dictionary using separators.
strm | Stream to output dictionary to |
vars | Dictionary of variable names and values. |
sep0 | First separater before all ('\0' means none) |
sep1 | Separater between pairs |
sep2 | Separater between key and value |
type | Type of translation. |
Referenced by SplitQueryVars().
|
inline |
Parse the URL string into the fields in the object instance.
cstr | URL as a string to parse. |
defaultScheme | Default scheme for URL |
References InternalParse().
Parse the URL string into the fields in the object instance.
str | URL as a string to parse. |
defaultScheme | Default scheme for URL |
References InternalParse().
|
virtual |
Output the contents of the URL to the stream as a string.
strm | Stream to print the object into. |
Reimplemented from PObject.
Reimplemented in PvCard::InlineValue, and PvCard::URIValue.
|
virtual |
Input the contents of the URL from the stream.
The input is a URL in string form.
strm | Stream to read the objects contents from. |
Reimplemented from PObject.
Reimplemented in PvCard::InlineValue, and PvCard::URIValue.
|
protected |
Referenced by OpenBrowser().
void PURL::SetContents | ( | const PString & | str | ) |
Set the contents of URL, data left after all elemetns are parsed out.
Referenced by GetContents().
void PURL::SetHostName | ( | const PString & | hostname | ) |
Set the hostname field of the URL.
Referenced by GetHostName().
void PURL::SetParameters | ( | const PString & | parameters | ) |
Set the parameter (;) field of the URL.
Referenced by GetPath().
Set the parameter (;) field of the URL as a string dictionary.
Note the values will be translated using TranslateString
key | Key to add/delete |
data | Vlaue to add at key, if empty string may be removed |
emptyDataDeletes | If true, and data empty string, key is removed |
Referenced by GetParamVars().
void PURL::SetParamVars | ( | const PStringToString & | paramVars | ) |
Set the parameter (;) field(s) of the URL as a string dictionary.
Note the values will be translated using TranslateString
Referenced by GetParamVars().
void PURL::SetPassword | ( | const PString & | password | ) |
Set the password field of the URL.
Referenced by GetPassword().
void PURL::SetPath | ( | const PStringArray & | path | ) |
Set the path field of the URL as a string array.
Referenced by GetPath().
void PURL::SetPathStr | ( | const PString & | pathStr | ) |
Set the path field of the URL as a string.
Referenced by GetRelativePath().
void PURL::SetPort | ( | WORD | newPort | ) |
Set the port field in the URL.
Referenced by GetPort().
void PURL::SetQuery | ( | const PString & | query | ) |
Set the Query (?) field of the URL as a string.
Note the values will be translated using UntranslateString
Referenced by GetFragment().
Set the Query (?) field of the URL as a string dictionary.
Note the values will be translated using TranslateString
Referenced by GetQueryVars().
void PURL::SetQueryVars | ( | const PStringToString & | queryVars | ) |
Set the Query (?) field(s) of the URL as a string dictionary.
Note the values will be translated using TranslateString
Referenced by GetQueryVars().
void PURL::SetScheme | ( | const PString & | scheme | ) |
Set the scheme field of the URL.
Referenced by GetScheme().
void PURL::SetUserName | ( | const PString & | username | ) |
Set the username field of the URL.
Referenced by GetUserName().
|
inlinestatic |
Split a string in &= form to a dictionary of names and values.
queryStr | String to split into variables. |
queryVars | Dictionary of variable names and values. |
References OutputVars(), ParameterTranslation, QueryTranslation, and SplitVars().
|
static |
Split a string to a dictionary of names and values.
str | String to split into variables. |
vars | Dictionary of variable names and values. |
sep1 | Separater between pairs |
sep2 | Separater between key and value |
type | Type of translation. |
Referenced by SplitQueryVars().
|
static |
Translate a string from general form to one that can be included into a URL.
All reserved characters for the particular field type are escaped.
str | String to be translated. |
type | Type of translation. |
|
static |
Untranslate a string from a form that was included into a URL into a normal string.
All reserved characters for the particular field type are unescaped.
str | String to be translated. |
type | Type of translation. |
|
protected |
Referenced by GetFragment().
|
protected |
Referenced by GetHostName().
|
protected |
Referenced by GetContents().
|
protected |
Referenced by GetParamVars().
|
protected |
Referenced by GetPassword().
|
protected |
Referenced by GetPath().
|
protected |
Referenced by GetPort().
|
protected |
Referenced by GetPortSupplied().
|
protected |
Referenced by GetQueryVars().
|
protected |
port was supplied in string input
Referenced by GetRelativePath().
|
protected |
Referenced by PURLLegacyScheme::GetName(), and GetScheme().
|
protected |
Referenced by GetUserName().