X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f61815af20ebb943000d36ea01489f6115e4061c..236a9de39afa090fdee3cf91cb5364ceca69e3f8:/src/common/url.cpp diff --git a/src/common/url.cpp b/src/common/url.cpp index 307bf7627f..8c680f6905 100644 --- a/src/common/url.cpp +++ b/src/common/url.cpp @@ -20,24 +20,23 @@ #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) IMPLEMENT_CLASS(wxURL, wxObject) -#endif // Protocols list wxProtoInfo *wxURL::g_protocols = NULL; + +#if wxUSE_SOCKETS wxHTTP *wxURL::g_proxy = NULL; +#endif // -------------------------------------------------------------- // wxURL @@ -52,8 +51,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 +97,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 +120,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 +144,7 @@ bool wxURL::PrepProto(wxString& url) int pos; // Find end - pos = url.Find(_T(':')); + pos = url.Find(wxT(':')); if (pos == -1) return FALSE; @@ -153,12 +160,12 @@ bool wxURL::PrepHost(wxString& url) wxString temp_url; int pos, pos2; - if ((url.GetChar(0) != '/') || (url.GetChar(1) != '/')) + if ((url.GetChar(0) != wxT('/')) || (url.GetChar(1) != wxT('/'))) return FALSE; url = url(2, url.Length()); - pos = url.Find(_T('/')); + pos = url.Find(wxT('/')); if (pos == -1) pos = url.Length(); @@ -166,10 +173,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 +185,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 +212,7 @@ bool wxURL::PrepPath(wxString& url) if (url.Length() != 0) m_path = ConvertToValidURI(url); else - m_path = _T("/"); + m_path = wxT("/"); return TRUE; } @@ -231,9 +238,8 @@ bool wxURL::FetchProtocol() // --------- wxURL get ------------------------------------------ // -------------------------------------------------------------- -wxInputStream *wxURL::GetInputStream(void) +wxInputStream *wxURL::GetInputStream() { - wxIPV4address addr; wxInputStream *the_i_stream = NULL; if (!m_protocol) { @@ -242,11 +248,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 +271,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 +287,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 +298,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 +336,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 +358,7 @@ void wxURL::SetProxy(const wxString& url_proxy) m_useProxy = TRUE; ParseURL(); } +#endif wxString wxURL::ConvertToValidURI(const wxString& uri) { @@ -357,19 +369,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; +}