]> git.saurik.com Git - wxWidgets.git/blob - include/wx/url.h
fix aui crash related to SF bug 1531361
[wxWidgets.git] / include / wx / url.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: url.h
3 // Purpose: URL parser
4 // Author: Guilhem Lavaux
5 // Modified by: Ryan Norton
6 // Created: 20/07/1997
7 // RCS-ID: $Id$
8 // Copyright: (c) 1997, 1998 Guilhem Lavaux
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_URL_H
13 #define _WX_URL_H
14
15 #include "wx/defs.h"
16
17 #if wxUSE_URL
18
19 #include "wx/uri.h"
20 #include "wx/protocol/protocol.h"
21
22 #if wxUSE_PROTOCOL_HTTP
23 #include "wx/protocol/http.h"
24 #endif
25
26 typedef enum {
27 wxURL_NOERR = 0,
28 wxURL_SNTXERR,
29 wxURL_NOPROTO,
30 wxURL_NOHOST,
31 wxURL_NOPATH,
32 wxURL_CONNERR,
33 wxURL_PROTOERR
34 } wxURLError;
35
36 #if wxUSE_URL_NATIVE
37 class WXDLLIMPEXP_NET wxURL;
38
39 class WXDLLIMPEXP_NET wxURLNativeImp : public wxObject
40 {
41 public:
42 virtual ~wxURLNativeImp() { }
43 virtual wxInputStream *GetInputStream(wxURL *owner) = 0;
44 };
45 #endif // wxUSE_URL_NATIVE
46
47 class WXDLLIMPEXP_NET wxURL : public wxURI
48 {
49 public:
50 wxURL(const wxString& sUrl = wxEmptyString);
51 wxURL(const wxURI& url);
52 virtual ~wxURL();
53
54 wxURL& operator = (const wxString& url);
55 wxURL& operator = (const wxURI& url);
56
57 wxProtocol& GetProtocol() { return *m_protocol; }
58 wxURLError GetError() const { return m_error; }
59 wxString GetURL() const { return m_url; }
60
61 wxURLError SetURL(const wxString &url)
62 { *this = url; return m_error; }
63
64 bool IsOk() const
65 { return m_error == wxURL_NOERR; }
66
67 wxInputStream *GetInputStream();
68
69 #if wxUSE_PROTOCOL_HTTP
70 static void SetDefaultProxy(const wxString& url_proxy);
71 void SetProxy(const wxString& url_proxy);
72 #endif // wxUSE_PROTOCOL_HTTP
73
74 #if WXWIN_COMPATIBILITY_2_4
75 //Use the proper wxURI accessors instead
76 wxDEPRECATED( wxString GetProtocolName() const );
77 wxDEPRECATED( wxString GetHostName() const );
78 wxDEPRECATED( wxString GetPath() const );
79
80 //Use wxURI instead - this does not work that well
81 wxDEPRECATED( static wxString ConvertToValidURI(
82 const wxString& uri,
83 const wxChar* delims = wxT(";/?:@&=+$,")
84 ) );
85
86 //Use wxURI::Unescape instead
87 wxDEPRECATED( static wxString ConvertFromURI(const wxString& uri) );
88 #endif
89
90 protected:
91 static wxProtoInfo *ms_protocols;
92
93 #if wxUSE_PROTOCOL_HTTP
94 static wxHTTP *ms_proxyDefault;
95 static bool ms_useDefaultProxy;
96 wxHTTP *m_proxy;
97 #endif // wxUSE_PROTOCOL_HTTP
98
99 #if wxUSE_URL_NATIVE
100 friend class wxURLNativeImp;
101 // pointer to a native URL implementation object
102 wxURLNativeImp *m_nativeImp;
103 // Creates on the heap and returns a native
104 // implementation object for the current platform.
105 static wxURLNativeImp *CreateNativeImpObject();
106 #endif
107 wxProtoInfo *m_protoinfo;
108 wxProtocol *m_protocol;
109
110 wxURLError m_error;
111 wxString m_url;
112 bool m_useProxy;
113
114 void Init(const wxString&);
115 bool ParseURL();
116 void CleanData();
117 bool FetchProtocol();
118
119 friend class wxProtoInfo;
120 friend class wxURLModule;
121
122 private:
123 DECLARE_DYNAMIC_CLASS(wxURL)
124 };
125
126 #endif // wxUSE_URL
127
128 #endif // _WX_URL_H
129