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: url.h 41263 2006-09-17 10:59:18Z RR $ 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: ~wxURLNativeImp()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 GetProtocol()57 wxProtocol& GetProtocol() { return *m_protocol; } GetError()58 wxURLError GetError() const { return m_error; } GetURL()59 wxString GetURL() const { return m_url; } 60 SetURL(const wxString & url)61 wxURLError SetURL(const wxString &url) 62 { *this = url; return m_error; } 63 IsOk()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 130