cdbcf4c286
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52960 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
316 lines
8.7 KiB
Objective-C
316 lines
8.7 KiB
Objective-C
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: uri.h
|
|
// Purpose: interface of wxURI
|
|
// Author: wxWidgets team
|
|
// RCS-ID: $Id$
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
@class wxURI
|
|
@wxheader{uri.h}
|
|
|
|
wxURI is used to extract information from
|
|
a URI (Uniform Resource Identifier).
|
|
|
|
For information about URIs, see
|
|
RFC 3986.
|
|
|
|
In short, a URL is a URI. In other
|
|
words, URL is a subset of a URI - all
|
|
acceptable URLs are also acceptable URIs.
|
|
|
|
wxURI automatically escapes invalid characters in a string,
|
|
so there is no chance of wxURI "failing" on construction/creation.
|
|
|
|
wxURI supports copy construction and standard assignment
|
|
operators. wxURI can also be inherited from to provide
|
|
furthur functionality.
|
|
|
|
@library{wxbase}
|
|
@category{data}
|
|
|
|
@see wxURL
|
|
*/
|
|
class wxURI : public wxObject
|
|
{
|
|
public:
|
|
//@{
|
|
/**
|
|
Copies this URI from another URI.
|
|
|
|
@param uri
|
|
URI (Uniform Resource Identifier) to initialize with
|
|
*/
|
|
wxURI();
|
|
wxURI(const wxChar* uri);
|
|
wxURI(const wxURI& uri);
|
|
//@}
|
|
|
|
/**
|
|
Builds the URI from its individual components and adds proper separators.
|
|
If the URI is not a reference or is not resolved,
|
|
the URI that is returned from Get is the same one
|
|
passed to Create.
|
|
*/
|
|
wxString BuildURI() const;
|
|
|
|
/**
|
|
Builds the URI from its individual components, adds proper separators, and
|
|
returns escape sequences to normal characters.
|
|
Note that it is preferred to call this over Unescape(BuildURI()) since
|
|
BuildUnescapedURI() performs some optimizations over the plain method.
|
|
*/
|
|
wxString BuildUnescapedURI() const;
|
|
|
|
/**
|
|
Creates this URI from the string
|
|
|
|
@param uri.
|
|
|
|
Returns the position at which parsing stopped (there
|
|
is no such thing as an "invalid" wxURI).
|
|
|
|
uri
|
|
string to initialize from
|
|
*/
|
|
const wxChar* Create(const wxString uri);
|
|
|
|
/**
|
|
Note that on URIs with a "file" scheme wxURI does not
|
|
parse the userinfo, server, or port portion. This is to keep
|
|
compatability with wxFileSystem, the old wxURL, and older url specifications.
|
|
*/
|
|
|
|
|
|
/**
|
|
Obtains the fragment of this URI.
|
|
The fragment of a URI is the last value of the URI,
|
|
and is the value after a " character after the path
|
|
of the URI.
|
|
@c http://mysite.com/mypath#fragment
|
|
*/
|
|
const wxString GetFragment() const;
|
|
|
|
/**
|
|
Obtains the host type of this URI, which is of type
|
|
HostType():
|
|
|
|
@b wxURI_REGNAME
|
|
|
|
Server is a host name, or the Server component itself is undefined.
|
|
|
|
@b wxURI_IPV4ADDRESS
|
|
|
|
Server is a IP version 4 address (XXX.XXX.XXX.XXX)
|
|
|
|
@b wxURI_IPV6ADDRESS
|
|
|
|
Server is a IP version 6 address ((XXX:)XXX::(XXX)XXX:XXX
|
|
|
|
@b wxURI_IPVFUTURE
|
|
|
|
Server is an IP address, but not versions 4 or 6
|
|
*/
|
|
const HostType GetHostType() const;
|
|
|
|
/**
|
|
Returns the password part of the userinfo component of
|
|
this URI. Note that this is explicitly depreciated by
|
|
RFC 1396 and should generally be avoided if possible.
|
|
@c http://user:password@mysite.com/mypath
|
|
*/
|
|
const wxString GetPassword() const;
|
|
|
|
/**
|
|
Returns the (normalized) path of the URI.
|
|
The path component of a URI comes
|
|
directly after the scheme component
|
|
if followed by zero or one slashes ('/'),
|
|
or after the server/port component.
|
|
Absolute paths include the leading '/'
|
|
character.
|
|
@c http://mysite.compath
|
|
*/
|
|
const wxString GetPath() const;
|
|
|
|
/**
|
|
Returns a string representation of the URI's port.
|
|
The Port of a URI is a value after the server, and
|
|
must come after a colon (:).
|
|
@c http://mysite.com:port
|
|
Note that you can easily get the numeric value of the port
|
|
by using wxAtoi or wxString::Format.
|
|
*/
|
|
const wxString GetPort() const;
|
|
|
|
/**
|
|
Returns the Query component of the URI.
|
|
The query component is what is commonly passed to a
|
|
cgi application, and must come after the path component,
|
|
and after a '?' character.
|
|
@c http://mysite.com/mypath?query
|
|
*/
|
|
const wxString GetQuery() const;
|
|
|
|
/**
|
|
Returns the Scheme component of the URI.
|
|
The first part of the uri.
|
|
@c scheme://mysite.com
|
|
*/
|
|
const wxString GetScheme() const;
|
|
|
|
/**
|
|
Returns the Server component of the URI.
|
|
The server of the uri can be a server name or
|
|
a type of ip address. See
|
|
GetHostType() for the
|
|
possible values for the host type of the
|
|
server component.
|
|
@c http://server/mypath
|
|
*/
|
|
const wxString GetServer() const;
|
|
|
|
/**
|
|
Returns the username part of the userinfo component of
|
|
this URI. Note that this is explicitly depreciated by
|
|
RFC 1396 and should generally be avoided if possible.
|
|
@c http://user:password@mysite.com/mypath
|
|
*/
|
|
const wxString GetUser() const;
|
|
|
|
/**
|
|
Returns the UserInfo component of the URI.
|
|
The component of a URI before the server component
|
|
that is postfixed by a '@' character.
|
|
@c http://userinfo@mysite.com/mypath
|
|
*/
|
|
const wxString GetUserInfo() const;
|
|
|
|
/**
|
|
Returns @true if the Fragment component of the URI exists.
|
|
*/
|
|
bool HasFragment() const;
|
|
|
|
/**
|
|
Returns @true if the Path component of the URI exists.
|
|
*/
|
|
bool HasPath() const;
|
|
|
|
/**
|
|
Returns @true if the Port component of the URI exists.
|
|
*/
|
|
bool HasPort() const;
|
|
|
|
/**
|
|
Returns @true if the Query component of the URI exists.
|
|
*/
|
|
bool HasQuery() const;
|
|
|
|
/**
|
|
Returns @true if the Scheme component of the URI exists.
|
|
*/
|
|
bool HasScheme() const;
|
|
|
|
/**
|
|
Returns @true if the Server component of the URI exists.
|
|
*/
|
|
bool HasServer() const;
|
|
|
|
/**
|
|
Returns @true if the User component of the URI exists.
|
|
*/
|
|
bool HasUser() const;
|
|
|
|
/**
|
|
Returns @true if a valid [absolute] URI, otherwise this URI
|
|
is a URI reference and not a full URI, and IsReference
|
|
returns @false.
|
|
*/
|
|
bool IsReference() const;
|
|
|
|
/**
|
|
To obtain individual components you can use
|
|
one of the following methods
|
|
GetScheme()
|
|
|
|
GetUserInfo()
|
|
|
|
GetServer()
|
|
|
|
GetPort()
|
|
|
|
GetPath()
|
|
|
|
GetQuery()
|
|
|
|
GetFragment()
|
|
However, you should check HasXXX before
|
|
calling a get method, which determines whether or not the component referred
|
|
to by the method is defined according to RFC 2396.
|
|
Consider an undefined component equivalent to a
|
|
@NULL C string.
|
|
|
|
HasScheme()
|
|
|
|
HasUserInfo()
|
|
|
|
HasServer()
|
|
|
|
@ref hasserver() HasPort
|
|
|
|
HasPath()
|
|
|
|
HasQuery()
|
|
|
|
HasFragment()
|
|
Example:
|
|
*/
|
|
|
|
|
|
/**
|
|
Inherits this URI from a base URI - components that do not
|
|
exist in this URI are copied from the base, and if this URI's
|
|
path is not an absolute path (prefixed by a '/'), then this URI's
|
|
path is merged with the base's path.
|
|
For instance, resolving "../mydir" from "http://mysite.com/john/doe"
|
|
results in the scheme (http) and server (mysite.com) being copied into
|
|
this URI, since they do not exist. In addition, since the path
|
|
of this URI is not absolute (does not begin with '/'), the path
|
|
of the base's is merged with this URI's path, resulting in the URI
|
|
"http://mysite.com/john/mydir".
|
|
|
|
@param base
|
|
Base URI to inherit from. Must be a full URI and not a reference
|
|
@param flags
|
|
Currently either wxURI_STRICT or 0, in non-strict
|
|
mode some compatibility layers are enabled to allow loopholes from RFCs
|
|
prior
|
|
to 2396
|
|
*/
|
|
void Resolve(const wxURI& base, int flags = wxURI_STRICT);
|
|
|
|
/**
|
|
Translates all escape sequences (normal characters and returns the result.
|
|
This is the preferred over deprecated wxURL::ConvertFromURI.
|
|
If you want to unescape an entire wxURI, use BuildUnescapedURI() instead,
|
|
as it performs some optimizations over this method.
|
|
|
|
@param uri
|
|
string with escaped characters to convert
|
|
*/
|
|
wxString Unescape(const wxString& uri);
|
|
|
|
/**
|
|
Compares this URI to another URI, and returns @true if
|
|
this URI equals
|
|
|
|
@param uricomp, otherwise it returns @false.
|
|
|
|
uricomp
|
|
URI to compare to
|
|
*/
|
|
void operator ==(const wxURI& uricomp);
|
|
};
|
|
|