X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3b4183d82b7b833106edd751632c2f24c9580eb6..696b38f7f5255a9aae92822efafc3de36e3390a5:/include/wx/url.h diff --git a/include/wx/url.h b/include/wx/url.h index f37d4a9d90..761ba79b2d 100644 --- a/include/wx/url.h +++ b/include/wx/url.h @@ -2,25 +2,26 @@ // Name: url.h // Purpose: URL parser // Author: Guilhem Lavaux -// Modified by: +// Modified by: Ryan Norton // Created: 20/07/1997 // RCS-ID: $Id$ // Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// + #ifndef _WX_URL_H #define _WX_URL_H -#ifdef __GNUG__ -#pragma interface -#endif +#include "wx/defs.h" -// wxWindows header -#include "wx/object.h" +#if wxUSE_URL -// wxSocket headers +#include "wx/uri.h" #include "wx/protocol/protocol.h" -#include "wx/protocol/http.h" + +#if wxUSE_PROTOCOL_HTTP + #include "wx/protocol/http.h" +#endif typedef enum { wxURL_NOERR = 0, @@ -31,42 +32,92 @@ typedef enum { wxURL_CONNERR, wxURL_PROTOERR } wxURLError; - -class WXDLLEXPORT wxURL : public wxObject { - DECLARE_DYNAMIC_CLASS(wxURL) -protected: - static wxProtoInfo *g_protocols; - static wxHTTP *g_proxy; - wxProtoInfo *m_protoinfo; - wxProtocol *m_protocol; - wxHTTP m_proxy; - wxURLError m_error; - wxString m_protoname, m_hostname, m_servname, m_path, m_url; - wxString m_user, m_password; - - bool PrepProto(wxString& url); - bool PrepHost(wxString& url); - bool PrepPath(wxString& url); - bool ParseURL(); - void CleanData(); - bool FetchProtocol(); - - friend class wxProtoInfo; - friend class wxProtocolModule; + +#if wxUSE_URL_NATIVE +class WXDLLIMPEXP_NET wxURL; + +class WXDLLIMPEXP_NET wxURLNativeImp : public wxObject +{ public: + virtual ~wxURLNativeImp() { } + virtual wxInputStream *GetInputStream(wxURL *owner) = 0; +}; +#endif // wxUSE_URL_NATIVE - wxURL(const wxString& url); - virtual ~wxURL(); +class WXDLLIMPEXP_NET wxURL : public wxURI +{ +public: + wxURL(const wxString& sUrl); + wxURL(const wxURI& url); + virtual ~wxURL(); - inline wxString GetProtocolName() const - { return m_protoinfo->m_protoname; } - inline wxProtocol& GetProtocol() { return *m_protocol; } - inline wxURLError GetError() const { return m_error; } + wxURL& operator = (const wxString& url); + wxURL& operator = (const wxURI& url); - wxInputStream *GetInputStream(); + wxProtocol& GetProtocol() { return *m_protocol; } + wxURLError GetError() const { return m_error; } + wxString GetURL() const { return m_url; } - static void SetDefaultProxy(const wxString& url_proxy); - void SetProxy(const wxString& url_proxy); -}; + wxInputStream *GetInputStream(); + +#if wxUSE_PROTOCOL_HTTP + static void SetDefaultProxy(const wxString& url_proxy); + void SetProxy(const wxString& url_proxy); +#endif // wxUSE_PROTOCOL_HTTP + +#if WXWIN_COMPATIBILITY_2_4 + //Use the proper wxURI accessors instead + wxDEPRECATED( wxString GetProtocolName() const ); + wxDEPRECATED( wxString GetHostName() const ); + wxDEPRECATED( wxString GetPath() const ); + + //Use wxURI instead - this does not work that well + wxDEPRECATED( static wxString ConvertToValidURI( + const wxString& uri, + const wxChar* delims = wxT(";/?:@&=+$,") + ) ); + //Use wxURI::Unescape instead + wxDEPRECATED( static wxString ConvertFromURI(const wxString& uri) ); #endif + +protected: + static wxProtoInfo *ms_protocols; + +#if wxUSE_PROTOCOL_HTTP + static wxHTTP *ms_proxyDefault; + static bool ms_useDefaultProxy; + wxHTTP *m_proxy; +#endif // wxUSE_PROTOCOL_HTTP + +#if wxUSE_URL_NATIVE + friend class wxURLNativeImp; + // pointer to a native URL implementation object + wxURLNativeImp *m_nativeImp; + // Creates on the heap and returns a native + // implementation object for the current platform. + static wxURLNativeImp *CreateNativeImpObject(); +#endif + wxProtoInfo *m_protoinfo; + wxProtocol *m_protocol; + + wxURLError m_error; + wxString m_url; + bool m_useProxy; + + void Init(const wxString&); + bool ParseURL(); + void CleanData(); + bool FetchProtocol(); + + friend class wxProtoInfo; + friend class wxURLModule; + +private: + DECLARE_DYNAMIC_CLASS(wxURL) +}; + +#endif // wxUSE_URL + +#endif // _WX_URL_H +