diff --git a/include/wx/msw/webrequest_winhttp.h b/include/wx/msw/webrequest_winhttp.h index cd4c1750f2..22607becd7 100644 --- a/include/wx/msw/webrequest_winhttp.h +++ b/include/wx/msw/webrequest_winhttp.h @@ -115,6 +115,8 @@ public: wxWebRequest* CreateRequest(const wxString& url, int id = wxID_ANY) wxOVERRIDE; + wxVersionInfo GetLibraryVersionInfo() wxOVERRIDE; + HINTERNET GetHandle() const { return m_handle; } private: diff --git a/include/wx/webrequest.h b/include/wx/webrequest.h index be5f4136fa..644be4eb89 100644 --- a/include/wx/webrequest.h +++ b/include/wx/webrequest.h @@ -21,6 +21,7 @@ #include "wx/sharedptr.h" #include "wx/stream.h" #include "wx/vector.h" +#include "wx/versioninfo.h" class wxWebResponse; class wxWebSession; @@ -223,6 +224,8 @@ public: virtual wxWebRequest* CreateRequest(const wxString& url, int id = wxID_ANY) = 0; + virtual wxVersionInfo GetLibraryVersionInfo() = 0; + virtual void SetHeader(const wxString& name, const wxString& value) { m_headers[name] = value; } diff --git a/include/wx/webrequest_curl.h b/include/wx/webrequest_curl.h index 5d8d56b0a6..6d364241ff 100644 --- a/include/wx/webrequest_curl.h +++ b/include/wx/webrequest_curl.h @@ -116,6 +116,8 @@ public: wxWebRequest* CreateRequest(const wxString& url, int id = wxID_ANY) wxOVERRIDE; + wxVersionInfo GetLibraryVersionInfo() wxOVERRIDE; + bool StartRequest(wxWebRequestCURL& request); void CancelRequest(wxWebRequestCURL* request); diff --git a/interface/wx/webrequest.h b/interface/wx/webrequest.h index 4c24ac1ec5..b4d8c2f138 100644 --- a/interface/wx/webrequest.h +++ b/interface/wx/webrequest.h @@ -484,6 +484,12 @@ public: */ wxWebRequest* CreateRequest(const wxString& url, int id = wxID_ANY); + /** + Retrieve the version information about the implementation library used + by this session. + */ + virtual wxVersionInfo GetLibraryVersionInfo(); + /** Sets a request header in every wxWebRequest created from this session after is has been set. diff --git a/samples/webrequest/webrequest.cpp b/samples/webrequest/webrequest.cpp index 6b7e24afa3..52a347f242 100644 --- a/samples/webrequest/webrequest.cpp +++ b/samples/webrequest/webrequest.cpp @@ -165,6 +165,8 @@ public: CreateStatusBar(); + GetStatusBar()->SetStatusText(wxWebSession::GetDefault().GetLibraryVersionInfo().ToString()); + m_downloadProgressTimer.Bind(wxEVT_TIMER, &WebRequestFrame::OnProgressTimer, this); @@ -402,7 +404,7 @@ public: { if ( !wxApp::OnInit() ) return false; - + wxInitAllImageHandlers(); // create the main application window diff --git a/src/common/webrequest_curl.cpp b/src/common/webrequest_curl.cpp index b4dbc00c89..de4e96db31 100644 --- a/src/common/webrequest_curl.cpp +++ b/src/common/webrequest_curl.cpp @@ -479,6 +479,19 @@ void wxWebSessionCURL::CancelRequest(wxWebRequestCURL* request) m_cancelledRequests.push_back(wxObjectDataPtr(request)); } +wxVersionInfo wxWebSessionCURL::GetLibraryVersionInfo() +{ + const curl_version_info_data* vi = curl_version_info(CURLVERSION_NOW); + wxString desc = wxString::Format("libcurl/%s", vi->version); + if (vi->ssl_version[0]) + desc += " " + wxString(vi->ssl_version); + return wxVersionInfo("libcurl", + vi->version_num >> 16 & 0xff, + vi->version_num >> 8 & 0xff, + vi->version_num & 0xff, + desc); +} + // static void wxWebSessionCURL::InitializeCURL() { diff --git a/src/msw/webrequest_winhttp.cpp b/src/msw/webrequest_winhttp.cpp index eb7608564c..aad68998bc 100644 --- a/src/msw/webrequest_winhttp.cpp +++ b/src/msw/webrequest_winhttp.cpp @@ -524,4 +524,12 @@ wxWebRequest* wxWebSessionWinHTTP::CreateRequest(const wxString& url, int id) return new wxWebRequestWinHTTP(id, *this, url); } +wxVersionInfo wxWebSessionWinHTTP::GetLibraryVersionInfo() +{ + int verMaj, verMin, verMicro; + wxGetOsVersion(&verMaj, &verMin, &verMicro); + return wxVersionInfo("WinHTTP", verMaj, verMin, verMicro); +} + + #endif // wxUSE_WEBREQUEST_WINHTTP