1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4 %% Author: Ryan Norton <wxprojects@comcast.net>
8 %% Copyright: (c) Ryan Norton
9 %% License: wxWindows license
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12 \section{\class{wxURI
}}\label{wxuri
}
14 wxURI is used to extract information from
15 a URI (Uniform Resource Identifier).
17 For information about URIs, see
18 \urlref{RFC
3986}{http://www.ietf.org/rfc/rfc3986.txt
}.
20 In short, a URL
\em{is
} a URI. In other
21 words, URL is a subset of a URI - all
22 acceptable URLs are also acceptable URIs.
24 wxURI automatically escapes invalid characters in a string,
25 so there is no chance of wxURI "failing" on construction/creation.
27 wxURI supports copy construction and standard assignment
28 operators. wxURI can also be inherited from to provide
29 furthur functionality.
31 \wxheading{Derived from
}
33 \helpref{wxObject
}{wxobject
}
35 \wxheading{Include files
}
39 \latexignore{\rtfignore{\wxheading{Members
}}}
41 \membersection{Obtaining individual components
}\label{obtainingwxuricomponents
}
43 To obtain individual components you can use
44 one of the following methods
46 \helpref{GetScheme
}{wxurigetscheme
}\\
47 \helpref{GetUserInfo
}{wxurigetuserinfo
}\\
48 \helpref{GetServer
}{wxurigetserver
}\\
49 \helpref{GetPort
}{wxurigetserver
}\\
50 \helpref{GetPath
}{wxurigetpath
}\\
51 \helpref{GetQuery
}{wxurigetquery
}\\
52 \helpref{GetFragment
}{wxurigetfragment
}
54 However, you should check HasXXX before
55 calling a get method, which determines whether or not the component referred
56 to by the method is defined according to RFC
2396.
58 Consider an undefined component equivalent to a
61 \helpref{HasScheme
}{wxurihasscheme
}\\
62 \helpref{HasUserInfo
}{wxurihasuserinfo
}\\
63 \helpref{HasServer
}{wxurihasserver
}\\
64 \helpref{HasPort
}{wxurihasserver
}\\
65 \helpref{HasPath
}{wxurihaspath
}\\
66 \helpref{HasQuery
}{wxurihasquery
}\\
67 \helpref{HasFragment
}{wxurihasfragment
}
71 //protocol will hold the http protocol (i.e. "http")
73 wxURI myuri(wxT("http://mysite.com"));
75 protocol = myuri.GetScheme();
78 \membersection{wxURI::wxURI
}\label{wxuriwxuri
}
84 \func{}{wxURI
}{\param{const wxChar*
}{uri
}}
86 Constructor for quick creation.
88 \docparam{uri
}{string to initialize with
}
90 \func{}{wxURI
}{\param{const wxURI\&
}{uri
}}
92 Copies this URI from another URI.
94 \docparam{uri
}{URI (Uniform Resource Identifier) to initialize with
}
97 \membersection{wxURI::BuildURI
}\label{wxuribuilduri
}
99 \constfunc{wxString
}{BuildURI
}{\void}
101 Builds the URI from its individual components and adds proper separators.
103 If the URI is not a reference or is not resolved,
104 the URI that is returned from Get is the same one
108 \membersection{wxURI::BuildUnescapedURI
}\label{wxuribuildunescapeduri
}
110 \constfunc{wxString
}{BuildUnescapedURI
}{\void}
112 Builds the URI from its individual components, adds proper separators, and
113 returns escape sequences to normal characters.
115 Note that it is preferred to call this over Unescape(BuildURI()) since
116 \helpref{BuildUnescapedURI
}{wxuribuildunescapeduri
} performs some optimizations over the plain method.
119 \membersection{wxURI::Create
}\label{wxuricreate
}
121 \func{const wxChar*
}{Create
}{\param{const wxString&
}{uri
}}
123 Creates this URI from the string
\arg{uri
}.
125 Returns the position at which parsing stopped (there
126 is no such thing as an "invalid" wxURI).
128 \docparam{uri
}{string to initialize from
}
131 \membersection{wxURI::GetFragment
}\label{wxurigetfragment
}
133 \constfunc{const wxString&
}{GetFragment
}{\void}
135 Obtains the fragment of this URI.
137 The fragment of a URI is the last value of the URI,
138 and is the value after a '#' character after the path
141 \tt{http://mysite.com/mypath\#<fragment>
}
143 \membersection{wxURI::GetHostType
}\label{wxurigethosttype
}
145 \constfunc{const HostType\&
}{GetHostType
}{\void}
147 Obtains the host type of this URI, which is of type
151 \begin{twocollist
}\itemsep=
0pt
152 \twocolitem{{\bf wxURI
\_REGNAME}}{Server is a host name, or the Server component itself is undefined.
}
153 \twocolitem{{\bf wxURI
\_IPV4ADDRESS}}{Server is a IP version
4 address (XXX.XXX.XXX.XXX)
}
154 \twocolitem{{\bf wxURI
\_IPV6ADDRESS}}{Server is a IP version
6 address ((XXX:)XXX::(XXX)XXX:XXX
}
155 \twocolitem{{\bf wxURI
\_IPVFUTURE}}{Server is an IP address, but not versions
4 or
6}
159 \membersection{wxURI::GetPassword
}\label{wxurigetpassword
}
161 \constfunc{const wxString&
}{GetPassword
}{\void}
163 Returns the password part of the userinfo component of
164 this URI. Note that this is explicitly depreciated by
165 RFC
1396 and should generally be avoided if possible.
167 \tt{http://<user>:<password>@mysite.com/mypath
}
170 \membersection{wxURI::GetPath
}\label{wxurigetpath
}
172 \constfunc{const wxString&
}{GetPath
}{\void}
174 Returns the (normalized) path of the URI.
176 The path component of a URI comes
177 directly after the scheme component
178 if followed by zero or one slashes ('/'),
179 or after the server/port component.
181 Absolute paths include the leading '/'
184 \tt{http://mysite.com<path>
}
186 \membersection{wxURI::GetPort
}\label{wxurigetport
}
188 \constfunc{const wxString&
}{GetPort
}{\void}
190 Returns a string representation of the URI's port.
192 The Port of a URI is a value after the server, and
193 must come after a colon (:).
195 \tt{http://mysite.com:<port>
}
197 Note that you can easily get the numeric value of the port
198 by using wxAtoi or wxString::Format.
200 \membersection{wxURI::GetQuery
}\label{wxurigetquery
}
202 \constfunc{const wxString&
}{GetQuery
}{\void}
204 Returns the Query component of the URI.
206 The query component is what is commonly passed to a
207 cgi application, and must come after the path component,
208 and after a '?' character.
210 \tt{http://mysite.com/mypath?<query>
}
213 \membersection{wxURI::GetScheme
}\label{wxurigetscheme
}
215 \constfunc{const wxString&
}{GetScheme
}{\void}
217 Returns the Scheme component of the URI.
219 The first part of the uri.
221 \tt{<scheme>://mysite.com
}
224 \membersection{wxURI::GetServer
}\label{wxurigetserver
}
226 \constfunc{const wxString&
}{GetServer
}{\void}
228 Returns the Server component of the URI.
230 The server of the uri can be a server name or
231 a type of ip address. See
232 \helpref{GetHostType
}{wxurigethosttype
} for the
233 possible values for the host type of the
236 \tt{http://<server>/mypath
}
239 \membersection{wxURI::GetUser
}\label{wxurigetuser
}
241 \constfunc{const wxString&
}{GetUser
}{\void}
243 Returns the username part of the userinfo component of
244 this URI. Note that this is explicitly depreciated by
245 RFC
1396 and should generally be avoided if possible.
247 \tt{http://<user>:<password>@mysite.com/mypath
}
250 \membersection{wxURI::GetUserInfo
}\label{wxurigetuserinfo
}
252 \constfunc{const wxString&
}{GetUserInfo
}{\void}
254 Returns the UserInfo component of the URI.
256 The component of a URI before the server component
257 that is postfixed by a '@' character.
259 \tt{http://<userinfo>@mysite.com/mypath
}
262 \membersection{wxURI::HasFragment
}\label{wxurihasfragment
}
264 \constfunc{bool
}{HasFragment
}{\void}
266 Returns
\true if the Fragment component of the URI exists.
269 \membersection{wxURI::HasPath
}\label{wxurihaspath
}
271 \constfunc{bool
}{HasPath
}{\void}
273 Returns
\true if the Path component of the URI exists.
276 \membersection{wxURI::HasPort
}\label{wxurihasport
}
278 \constfunc{bool
}{HasPort
}{\void}
280 Returns
\true if the Port component of the URI exists.
283 \membersection{wxURI::HasQuery
}\label{wxurihasquery
}
285 \constfunc{bool
}{HasQuery
}{\void}
287 Returns
\true if the Query component of the URI exists.
290 \membersection{wxURI::HasScheme
}\label{wxurihasscheme
}
292 \constfunc{bool
}{HasScheme
}{\void}
294 Returns
\true if the Scheme component of the URI exists.
297 \membersection{wxURI::HasServer
}\label{wxurihasserver
}
299 \constfunc{bool
}{HasServer
}{\void}
301 Returns
\true if the Server component of the URI exists.
304 \membersection{wxURI::HasUser
}\label{wxurihasuserinfo
}
306 \constfunc{bool
}{HasUser
}{\void}
308 Returns
\true if the User component of the URI exists.
311 \membersection{wxURI::IsReference
}\label{wxuriisreference
}
313 \constfunc{bool
}{IsReference
}{\void}
315 Returns
\true if a valid
[absolute
] URI, otherwise this URI
316 is a URI reference and not a full URI, and IsReference
320 \membersection{wxURI::operator ==
}\label{wxurioperatorcompare
}
322 \func{void
}{operator ==
}{\param{const wxURI\&
}{uricomp
}}
324 Compares this URI to another URI, and returns
\true if
325 this URI equals
\arg{uricomp
}, otherwise it returns
\false.
327 \docparam{uricomp
}{URI to compare to
}
330 \membersection{wxURI::Resolve
}\label{wxuriresolve
}
332 \func{void
}{Resolve
}{\param{const wxURI\&
}{base
},
\param{int
}{flags =
\texttt{wxURI
\_STRICT}}}
334 Inherits this URI from a base URI - components that do not
335 exist in this URI are copied from the base, and if this URI's
336 path is not an absolute path (prefixed by a '/'), then this URI's
337 path is merged with the base's path.
339 For instance, resolving "../mydir" from "http://mysite.com/john/doe"
340 results in the scheme (http) and server (mysite.com) being copied into
341 this URI, since they do not exist. In addition, since the path
342 of this URI is not absolute (does not begin with '/'), the path
343 of the base's is merged with this URI's path, resulting in the URI
344 "http://mysite.com/john/mydir".
346 \docparam{base
}{Base URI to inherit from. Must be a full URI and not a reference
}
347 \docparam{flags
}{Currently either
\texttt{wxURI
\_STRICT} or $
0$, in non strict
348 mode some compatibility layers are enabled to allow loopholes from RFCs prior
351 \membersection{wxURI::Unescape
}\label{wxuriunescape
}
353 \func{wxString
}{Unescape
}{\param{const wxString\&
}{uri
}}
355 Translates all escape sequences (
% hex hex) of \arg{uri} into
356 normal characters and returns the result.
358 This is the preferred over deprecated wxURL::ConvertFromURI.
360 If you want to unescape an entire wxURI, use
\helpref{BuildUnescapedURI
}{wxuribuildunescapeduri
} instead,
361 as it performs some optimizations over this method.
363 \docparam{uri
}{string with escaped characters to convert
}