#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"
#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);
{ return -1; }
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;
}