git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21854
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
WX_DECLARE_EXPORTED_STRING_HASH_MAP( wxString, wxStringToStringHashMap );
WX_DECLARE_EXPORTED_STRING_HASH_MAP( wxString, wxStringToStringHashMap );
-class WXDLLIMPEXP_BASE wxHTTP : public wxProtocol {
- DECLARE_DYNAMIC_CLASS(wxHTTP)
- DECLARE_PROTOCOL(wxHTTP)
-protected:
- wxProtocolError m_perr;
- wxStringToStringHashMap m_headers;
- bool m_read, m_proxy_mode;
- wxSockAddress *m_addr;
- wxString m_post_buf;
+class WXDLLIMPEXP_BASE wxHTTP : public wxProtocol
+{
public:
wxHTTP();
~wxHTTP();
public:
wxHTTP();
~wxHTTP();
wxString GetContentType();
void SetHeader(const wxString& header, const wxString& h_data);
wxString GetContentType();
void SetHeader(const wxString& header, const wxString& h_data);
- wxString GetHeader(const wxString& header);
+ wxString GetHeader(const wxString& header) const;
void SetPostBuffer(const wxString& post_buf);
void SetProxyMode(bool on);
protected:
void SetPostBuffer(const wxString& post_buf);
void SetProxyMode(bool on);
protected:
wxHTTP_GET,
wxHTTP_POST,
wxHTTP_HEAD
wxHTTP_GET,
wxHTTP_POST,
wxHTTP_HEAD
+ };
+
+ typedef wxStringToStringHashMap::iterator wxHeaderIterator;
+
bool BuildRequest(const wxString& path, wxHTTP_Req req);
void SendHeaders();
bool ParseHeaders();
bool BuildRequest(const wxString& path, wxHTTP_Req req);
void SendHeaders();
bool ParseHeaders();
+ // find the header in m_headers
+ wxHeaderIterator FindHeader(const wxString& header) const;
+
// deletes the header value strings
void ClearHeaders();
// deletes the header value strings
void ClearHeaders();
- DECLARE_NO_COPY_CLASS(wxHTTP)
+ wxProtocolError m_perr;
+ wxStringToStringHashMap m_headers;
+ bool m_read,
+ m_proxy_mode;
+ wxSockAddress *m_addr;
+ wxString m_post_buf;
+
+ DECLARE_DYNAMIC_CLASS(wxHTTP)
+ DECLARE_PROTOCOL(wxHTTP)
+ DECLARE_NO_COPY_CLASS(wxHTTP)
};
#endif // wxUSE_PROTOCOL_HTTP
};
#endif // wxUSE_PROTOCOL_HTTP
+wxHTTP::wxHeaderIterator wxHTTP::FindHeader(const wxString& header) const
+{
+ // we can't convert between const_iterator to iterator otherwise...
+ wxStringToStringHashMap& headers = (wxStringToStringHashMap&)m_headers;
+
+ wxHeaderIterator it = headers.begin();
+ for ( wxHeaderIterator en = headers.end(); it != en; ++it )
+ {
+ if ( wxStricmp(it->first, header) == 0 )
+ break;
+ }
+
+ return it;
+}
+
void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
{
if (m_read) {
void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
{
if (m_read) {
- wxStringToStringHashMap::iterator it = m_headers.find(header);
+ wxHeaderIterator it = FindHeader(header);
if (it != m_headers.end())
if (it != m_headers.end())
- m_headers[header.Upper()] = h_data;
+ m_headers[header] = h_data;
-wxString wxHTTP::GetHeader(const wxString& header)
+wxString wxHTTP::GetHeader(const wxString& header) const
- wxStringToStringHashMap::iterator it = m_headers.find(header.Upper());
-
- if (it == m_headers.end())
- return wxEmptyString;
+ wxHeaderIterator it = FindHeader(header);
+ return it == m_headers.end() ? wxEmptyString : it->second;
}
void wxHTTP::SetPostBuffer(const wxString& post_buf)
{
}
void wxHTTP::SetPostBuffer(const wxString& post_buf)
{
}
void wxHTTP::SendHeaders()
}
void wxHTTP::SendHeaders()
#if defined(__VISAGECPP__)
// VA just can't stand while(1)
bool bOs2var = TRUE;
#if defined(__VISAGECPP__)
// VA just can't stand while(1)
bool bOs2var = TRUE;
m_perr = GetLine(this, line);
if (m_perr != wxPROTO_NOERR)
return FALSE;
m_perr = GetLine(this, line);
if (m_perr != wxPROTO_NOERR)
return FALSE;
break;
wxString left_str = line.BeforeFirst(':');
break;
wxString left_str = line.BeforeFirst(':');
- left_str.MakeUpper();
-
m_headers[left_str] = line.AfterFirst(':').Strip(wxString::both);
}
return TRUE;
m_headers[left_str] = line.AfterFirst(':').Strip(wxString::both);
}
return TRUE;