/////////////////////////////////////////////////////////////////////////////
-// Name: msw/urlmsw.cpp
+// Name: src/msw/urlmsw.cpp
// Purpose: MS-Windows native URL support based on WinINet
// Author: Hajo Kirchhoff
// Modified by:
#if wxUSE_URL_NATIVE
+#ifndef WX_PRECOMP
+ #include "wx/list.h"
+ #include "wx/string.h"
+ #include "wx/utils.h"
+ #include "wx/module.h"
+ #include "wx/log.h"
+#endif
+
#if !wxUSE_PROTOCOL_HTTP
-#include <wx/protocol/protocol.h>
+#include "wx/protocol/protocol.h"
// empty http protocol replacement (for now)
// so that wxUSE_URL_NATIVE can be used with
// the only "reason for being" for this class is to tell
// wxURL that there is someone dealing with the http protocol
IMPLEMENT_DYNAMIC_CLASS(wxHTTPDummyProto, wxProtocol)
-IMPLEMENT_PROTOCOL(wxHTTPDummyProto, wxT("http"), NULL, FALSE)
+IMPLEMENT_PROTOCOL(wxHTTPDummyProto, wxT("http"), NULL, false)
USE_PROTOCOL(wxHTTPDummyProto)
#endif // !wxUSE_PROTOCOL_HTTP
#pragma comment(lib, "wininet.lib")
#endif
-#include "wx/string.h"
-#include "wx/list.h"
-#include "wx/utils.h"
-#include "wx/module.h"
#include "wx/url.h"
#include <string.h>
{
public:
wxWinINetInputStream(HINTERNET hFile=0);
- ~wxWinINetInputStream();
+ virtual ~wxWinINetInputStream();
void Attach(HINTERNET hFile);
- off_t SeekI( off_t WXUNUSED(pos), wxSeekMode WXUNUSED(mode) )
+ wxFileOffset SeekI( wxFileOffset WXUNUSED(pos), wxSeekMode WXUNUSED(mode) )
{ return -1; }
- off_t TellI() const
+ wxFileOffset TellI() const
{ return -1; }
+ size_t GetSize() const;
protected:
void SetError(wxStreamError err) { m_lasterror=err; }
HINTERNET m_hFile;
size_t OnSysRead(void *buffer, size_t bufsize);
- DECLARE_NO_COPY_CLASS(wxWinINetInputStream)
+ wxDECLARE_NO_COPY_CLASS(wxWinINetInputStream);
};
+size_t wxWinINetInputStream::GetSize() const
+{
+ DWORD contentLength = 0;
+ DWORD dwSize = sizeof(contentLength);
+ DWORD index = 0;
+
+ if ( HttpQueryInfo( m_hFile, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &contentLength, &dwSize, &index) )
+ return contentLength;
+ else
+ return 0;
+}
+
size_t wxWinINetInputStream::OnSysRead(void *buffer, size_t bufsize)
{
DWORD bytesread = 0;
wxInputStream *wxWinINetURL::GetInputStream(wxURL *owner)
{
DWORD service;
- if ( owner->GetProtocolName() == wxT("http") )
+ if ( owner->GetScheme() == wxT("http") )
{
service = INTERNET_SERVICE_HTTP;
}
- else if ( owner->GetProtocolName() == wxT("ftp") )
+ else if ( owner->GetScheme() == wxT("ftp") )
{
service = INTERNET_SERVICE_FTP;
}
}
#endif // wxUSE_URL_NATIVE
-