X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a5d46b7362198fd94a5fd3b751df86287f2187bc..0e4a6d339ad982453af57a590c3bf08f70dbd165:/include/wx/protocol/http.h diff --git a/include/wx/protocol/http.h b/include/wx/protocol/http.h index 7b4f5db705..cfa2e6f944 100644 --- a/include/wx/protocol/http.h +++ b/include/wx/protocol/http.h @@ -1,12 +1,11 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: http.h +// Name: wx/protocol/http.h // Purpose: HTTP protocol // Author: Guilhem Lavaux -// Modified by: +// Modified by: Simo Virokannas (authentication, Dec 2005) // Created: August 1997 -// RCS-ID: $Id$ // Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_HTTP_H #define _WX_HTTP_H @@ -15,41 +14,80 @@ #if wxUSE_PROTOCOL_HTTP -#include "wx/list.h" +#include "wx/hashmap.h" #include "wx/protocol/protocol.h" +#include "wx/buffer.h" -class WXDLLEXPORT wxHTTP : public wxProtocol { - DECLARE_DYNAMIC_CLASS(wxHTTP) - DECLARE_PROTOCOL(wxHTTP) -protected: - wxProtocolError m_perr; - wxList m_headers; - bool m_read, m_proxy_mode; - wxSockAddress *m_addr; +class WXDLLIMPEXP_NET wxHTTP : public wxProtocol +{ public: - wxHTTP(); - ~wxHTTP(); + wxHTTP(); + virtual ~wxHTTP(); + + virtual bool Connect(const wxString& host, unsigned short port); + virtual bool Connect(const wxString& host) { return Connect(host, 0); } + virtual bool Connect(const wxSockAddress& addr, bool wait); + bool Abort(); + + wxInputStream *GetInputStream(const wxString& path); - bool Connect(const wxString& host); - bool Connect(wxSockAddress& addr, bool wait); - bool Abort(); - wxInputStream *GetInputStream(const wxString& path); - inline wxProtocolError GetError() { return m_perr; } - wxString GetContentType(); + wxString GetContentType() const; + wxString GetHeader(const wxString& header) const; + int GetResponse() const { return m_http_response; } - void SetHeader(const wxString& header, const wxString& h_data); - wxString GetHeader(const wxString& header); + void SetMethod(const wxString& method) { m_method = method; } + void SetHeader(const wxString& header, const wxString& h_data); + bool SetPostText(const wxString& contentType, + const wxString& data, + const wxMBConv& conv = wxConvUTF8); + bool SetPostBuffer(const wxString& contentType, const wxMemoryBuffer& data); + void SetProxyMode(bool on); - void SetProxyMode(bool on); + /* Cookies */ + wxString GetCookie(const wxString& cookie) const; + bool HasCookies() const { return m_cookies.size() > 0; } + + // Use the other SetPostBuffer() overload or SetPostText() instead. + wxDEPRECATED(void SetPostBuffer(const wxString& post_buf)); protected: - typedef enum { - wxHTTP_GET, - wxHTTP_HEAD - } wxHTTP_Req; - bool BuildRequest(const wxString& path, wxHTTP_Req req); - void SendHeaders(); - bool ParseHeaders(); + typedef wxStringToStringHashMap::iterator wxHeaderIterator; + typedef wxStringToStringHashMap::const_iterator wxHeaderConstIterator; + typedef wxStringToStringHashMap::iterator wxCookieIterator; + typedef wxStringToStringHashMap::const_iterator wxCookieConstIterator; + + bool BuildRequest(const wxString& path, const wxString& method); + void SendHeaders(); + bool ParseHeaders(); + + wxString GenerateAuthString(const wxString& user, const wxString& pass) const; + + // find the header in m_headers + wxHeaderIterator FindHeader(const wxString& header); + wxHeaderConstIterator FindHeader(const wxString& header) const; + wxCookieIterator FindCookie(const wxString& cookie); + wxCookieConstIterator FindCookie(const wxString& cookie) const; + + // deletes the header value strings + void ClearHeaders(); + void ClearCookies(); + + // internal variables: + + wxString m_method; + wxStringToStringHashMap m_cookies; + + wxStringToStringHashMap m_headers; + bool m_read, + m_proxy_mode; + wxSockAddress *m_addr; + wxMemoryBuffer m_postBuffer; + wxString m_contentType; + int m_http_response; + + DECLARE_DYNAMIC_CLASS(wxHTTP) + DECLARE_PROTOCOL(wxHTTP) + wxDECLARE_NO_COPY_CLASS(wxHTTP); }; #endif // wxUSE_PROTOCOL_HTTP