X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f61815af20ebb943000d36ea01489f6115e4061c..ecef04c293db3e3ebcdb12062fdc40b9b35c8c3e:/src/common/url.cpp?ds=sidebyside diff --git a/src/common/url.cpp b/src/common/url.cpp index 307bf7627f..203beef31d 100644 --- a/src/common/url.cpp +++ b/src/common/url.cpp @@ -20,15 +20,13 @@ #pragma hdrstop #endif -#if wxUSE_SOCKETS - #include #include -#include -#include -#include -#include +#include "wx/string.h" +#include "wx/list.h" +#include "wx/utils.h" +#include "wx/url.h" #if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxProtoInfo, wxObject) @@ -37,7 +35,10 @@ IMPLEMENT_CLASS(wxURL, wxObject) // Protocols list wxProtoInfo *wxURL::g_protocols = NULL; + +#if wxUSE_SOCKETS wxHTTP *wxURL::g_proxy = NULL; +#endif // -------------------------------------------------------------- // wxURL @@ -52,8 +53,10 @@ wxURL::wxURL(const wxString& url) m_protocol = NULL; m_error = wxURL_NOERR; m_url = url; +#if wxUSE_SOCKETS m_useProxy = (g_proxy != NULL); m_proxy = g_proxy; +#endif ParseURL(); } @@ -96,20 +99,22 @@ bool wxURL::ParseURL() } // URL parse finished. +#if wxUSE_SOCKETS if (m_useProxy) { // We destroy the newly created protocol. CleanData(); // Third, we rebuild the URL. - m_url = m_protoname + _T(":"); + m_url = m_protoname + wxT(":"); if (m_protoinfo->m_needhost) - m_url = m_url + _T("//") + m_hostname; + m_url = m_url + wxT("//") + m_hostname; m_url += m_path; // We initialize specific variables. m_protocol = m_proxy; // FIXME: we should clone the protocol } +#endif m_error = wxURL_NOERR; return TRUE; @@ -117,15 +122,19 @@ bool wxURL::ParseURL() void wxURL::CleanData() { +#if wxUSE_SOCKETS if (!m_useProxy) +#endif delete m_protocol; } wxURL::~wxURL() { CleanData(); +#if wxUSE_SOCKETS if (m_proxy && m_proxy != g_proxy) delete m_proxy; +#endif } // -------------------------------------------------------------- @@ -137,7 +146,7 @@ bool wxURL::PrepProto(wxString& url) int pos; // Find end - pos = url.Find(_T(':')); + pos = url.Find(wxT(':')); if (pos == -1) return FALSE; @@ -158,7 +167,7 @@ bool wxURL::PrepHost(wxString& url) url = url(2, url.Length()); - pos = url.Find(_T('/')); + pos = url.Find(wxT('/')); if (pos == -1) pos = url.Length(); @@ -166,10 +175,10 @@ bool wxURL::PrepHost(wxString& url) return FALSE; temp_url = url(0, pos); - url = url(url.Find(_T('/')), url.Length()); + url = url(url.Find(wxT('/')), url.Length()); // Retrieve service number - pos2 = temp_url.Find(_T(':'), TRUE); + pos2 = temp_url.Find(wxT(':'), TRUE); if (pos2 != -1 && pos2 < pos) { m_servname = temp_url(pos2+1, pos); if (!m_servname.IsNumber()) @@ -178,18 +187,18 @@ bool wxURL::PrepHost(wxString& url) } // Retrieve user and password. - pos2 = temp_url.Find(_T('@')); + pos2 = temp_url.Find(wxT('@')); // Even if pos2 equals -1, this code is right. m_hostname = temp_url(pos2+1, temp_url.Length()); - m_user = _T(""); - m_password = _T(""); + m_user = wxT(""); + m_password = wxT(""); if (pos2 == -1) return TRUE; temp_url = temp_url(0, pos2); - pos2 = temp_url.Find(_T(':')); + pos2 = temp_url.Find(wxT(':')); if (pos2 == -1) return FALSE; @@ -205,7 +214,7 @@ bool wxURL::PrepPath(wxString& url) if (url.Length() != 0) m_path = ConvertToValidURI(url); else - m_path = _T("/"); + m_path = wxT("/"); return TRUE; } @@ -233,7 +242,6 @@ bool wxURL::FetchProtocol() wxInputStream *wxURL::GetInputStream(void) { - wxIPV4address addr; wxInputStream *the_i_stream = NULL; if (!m_protocol) { @@ -242,11 +250,14 @@ wxInputStream *wxURL::GetInputStream(void) } m_error = wxURL_NOERR; - if (m_user != _T("")) { + if (m_user != wxT("")) { m_protocol->SetUser(m_user); m_protocol->SetPassword(m_password); } +#if wxUSE_SOCKETS + wxIPV4address addr; + // m_protoinfo is NULL when we use a proxy if (!m_useProxy && m_protoinfo->m_needhost) { if (!addr.Hostname(m_hostname)) { @@ -262,6 +273,7 @@ wxInputStream *wxURL::GetInputStream(void) return NULL; } } +#endif // When we use a proxy, we have to pass the whole URL to it. if (m_useProxy) @@ -277,6 +289,7 @@ wxInputStream *wxURL::GetInputStream(void) return the_i_stream; } +#if wxUSE_SOCKETS void wxURL::SetDefaultProxy(const wxString& url_proxy) { if (url_proxy.IsNull()) { @@ -287,7 +300,7 @@ void wxURL::SetDefaultProxy(const wxString& url_proxy) } wxString tmp_str = url_proxy; - int pos = tmp_str.Find(_T(':')); + int pos = tmp_str.Find(wxT(':')); if (pos == -1) return; @@ -325,7 +338,7 @@ void wxURL::SetProxy(const wxString& url_proxy) wxIPV4address addr; tmp_str = url_proxy; - pos = tmp_str.Find(_T(':')); + pos = tmp_str.Find(wxT(':')); // This is an invalid proxy name. if (pos == -1) return; @@ -347,6 +360,7 @@ void wxURL::SetProxy(const wxString& url_proxy) m_useProxy = TRUE; ParseURL(); } +#endif wxString wxURL::ConvertToValidURI(const wxString& uri) { @@ -357,19 +371,44 @@ wxString wxURL::ConvertToValidURI(const wxString& uri) for (i=0;i= wxT('A') && uri[i] <= wxT('F')) + code = (uri[i] - wxT('A') + 10) * 16; + else + code = (uri[i] - wxT('0')) * 16; + i++; + if (uri[i] >= wxT('A') && uri[i] <= wxT('F')) + code += (uri[i] - wxT('A')) + 10; + else + code += (uri[i] - wxT('0')); + i++; + new_uri += (wxChar)code; + continue; + } + new_uri += uri[i]; + i++; + } + return new_uri; +}