1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        url.h
3 // Purpose:     URL parser
4 // Author:      Guilhem Lavaux
5 // Modified by:
6 // Created:     20/07/1997
7 // RCS-ID:      $Id: url.h,v 1.1 2006/12/02 15:58:27 scara Exp $
8 // Copyright:   (c) 1997, 1998 Guilhem Lavaux
9 // Licence:     wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_URL_H
13 #define _WX_URL_H
14 
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "url.h"
17 #endif
18 
19 #include "wx/defs.h"
20 
21 #if wxUSE_URL
22 
23 #include "wx/object.h"
24 #include "wx/protocol/protocol.h"
25 
26 #if wxUSE_PROTOCOL_HTTP
27   #include "wx/protocol/http.h"
28 #endif
29 
30 typedef enum {
31   wxURL_NOERR = 0,
32   wxURL_SNTXERR,
33   wxURL_NOPROTO,
34   wxURL_NOHOST,
35   wxURL_NOPATH,
36   wxURL_CONNERR,
37   wxURL_PROTOERR
38 } wxURLError;
39 
40 class WXDLLEXPORT wxURL : public wxObject
41 {
42 public:
43     wxURL(const wxString& url);
44     virtual ~wxURL();
45 
GetProtocolName()46     wxString GetProtocolName() const { return m_protoinfo->m_protoname; }
GetHostName()47     wxString GetHostName() const     { return m_hostname; }
GetURL()48     wxString GetURL() const          { return m_url; }
GetProtocol()49     wxProtocol& GetProtocol()        { return *m_protocol; }
GetError()50     wxURLError GetError() const      { return m_error; }
GetPath()51     wxString GetPath() const         { return m_path; }
52 
53     wxInputStream *GetInputStream();
54 
55 #if wxUSE_SOCKETS
56     static void SetDefaultProxy(const wxString& url_proxy);
57     void SetProxy(const wxString& url_proxy);
58 #endif // wxUSE_SOCKETS
59 
60     static wxString ConvertToValidURI(
61                         const wxString& uri,
62                         const wxChar* delims = wxT(";/?:@&=+$,")
63                     );
64     static wxString ConvertFromURI(const wxString& uri);
65 
66 protected:
67     static wxProtoInfo *ms_protocols;
68 
69 #if wxUSE_SOCKETS
70     static wxHTTP *ms_proxyDefault;
71     static bool ms_useDefaultProxy;
72     wxHTTP *m_proxy;
73 #endif // wxUSE_SOCKETS
74 
75     wxProtoInfo *m_protoinfo;
76     wxProtocol *m_protocol;
77 
78     wxURLError m_error;
79     wxString m_protoname, m_hostname, m_servname, m_path, m_url;
80     wxString m_user, m_password;
81     bool m_useProxy;
82 
83     bool PrepProto(wxString& url);
84     bool PrepHost(wxString& url);
85     bool PrepPath(wxString& url);
86     bool ParseURL();
87     void CleanData();
88     bool FetchProtocol();
89 
90     friend class wxProtoInfo;
91     friend class wxURLModule;
92 
93 private:
94     // VZ: can't use default copy ctor for this class, should write a correct
95     //     one! (TODO)
96     DECLARE_NO_COPY_CLASS(wxURL)
97 
98     DECLARE_DYNAMIC_CLASS(wxURL)
99 };
100 
101 #endif // wxUSE_URL
102 
103 #endif // _WX_URL_H
104 
105