Start wxWebRequestWinHTTP implementation
Can already run the GET request in the sample app
This commit is contained in:
@@ -18,15 +18,29 @@
|
||||
#include "wx/object.h"
|
||||
#include "wx/scopedptr.h"
|
||||
#include "wx/sharedptr.h"
|
||||
#include "wx/stream.h"
|
||||
#include "wx/vector.h"
|
||||
|
||||
class wxWebResponse;
|
||||
class wxWebSession;
|
||||
|
||||
WX_DECLARE_STRING_HASH_MAP(wxString, wxWebRequestHeaderMap);
|
||||
|
||||
class WXDLLIMPEXP_NET wxWebRequest : public wxEvtHandler, public wxRefCounter
|
||||
{
|
||||
public:
|
||||
virtual void SetHeader(const wxString& name, const wxString& value) = 0;
|
||||
enum State
|
||||
{
|
||||
State_Idle,
|
||||
State_Active,
|
||||
State_Ready,
|
||||
State_Failed
|
||||
};
|
||||
|
||||
virtual ~wxWebRequest() { }
|
||||
|
||||
virtual void SetHeader(const wxString& name, const wxString& value)
|
||||
{ m_headers[name] = value; }
|
||||
|
||||
virtual void SetMethod(const wxString& method) = 0;
|
||||
|
||||
@@ -34,21 +48,50 @@ public:
|
||||
|
||||
virtual void SetData(const wxInputStream& dataStream, const wxString& contentType) = 0;
|
||||
|
||||
virtual void SetIgnoreServerErrorStatus(bool ignore) = 0;
|
||||
void SetIgnoreServerErrorStatus(bool ignore) { m_ignoreServerErrorStatus = ignore; }
|
||||
|
||||
virtual void Start() = 0;
|
||||
|
||||
virtual void Cancel() = 0;
|
||||
|
||||
virtual const wxWebResponse* GetResponse() const = 0;
|
||||
virtual wxWebResponse* GetResponse() = 0;
|
||||
|
||||
int GetId() const { return m_id; }
|
||||
|
||||
State GetState() const { return m_state; }
|
||||
|
||||
protected:
|
||||
wxWebRequestHeaderMap m_headers;
|
||||
|
||||
wxWebRequest(int id):
|
||||
m_id(id),
|
||||
m_state(State_Idle),
|
||||
m_ignoreServerErrorStatus(false) { }
|
||||
|
||||
void SetState(State state, const wxString& failMsg = "");
|
||||
|
||||
bool CheckServerStatus();
|
||||
|
||||
private:
|
||||
int m_id;
|
||||
State m_state;
|
||||
wxString m_failMessage;
|
||||
bool m_ignoreServerErrorStatus;
|
||||
|
||||
void ProcessReadyEvent();
|
||||
|
||||
void ProcessFailedEvent();
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebRequest);
|
||||
};
|
||||
|
||||
class WXDLLIMPEXP_NET wxWebResponse
|
||||
{
|
||||
public:
|
||||
virtual ~wxWebResponse() { }
|
||||
|
||||
virtual wxInt64 GetContentLength() const = 0;
|
||||
|
||||
virtual wxString GetURL() const = 0;
|
||||
|
||||
virtual wxString GetHeader(const wxString& name) const = 0;
|
||||
@@ -57,10 +100,13 @@ public:
|
||||
|
||||
virtual wxString GetStatusText() const = 0;
|
||||
|
||||
virtual wxInputStream& GetStream() const = 0;
|
||||
virtual wxInputStream* GetStream() const = 0;
|
||||
|
||||
virtual wxString AsString(wxMBConv* conv = NULL) const = 0;
|
||||
|
||||
protected:
|
||||
wxWebResponse() { }
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxWebResponse);
|
||||
};
|
||||
@@ -69,6 +115,8 @@ class WXDLLIMPEXP_NET wxWebSessionFactory
|
||||
{
|
||||
public:
|
||||
virtual wxWebSession* Create() = 0;
|
||||
|
||||
virtual ~wxWebSessionFactory() { }
|
||||
};
|
||||
|
||||
WX_DECLARE_STRING_HASH_MAP(wxSharedPtr<wxWebSessionFactory>, wxStringWebSessionFactoryMap);
|
||||
@@ -85,7 +133,10 @@ public:
|
||||
|
||||
virtual wxWebRequest* CreateRequest(const wxString& url, int id = wxID_ANY) = 0;
|
||||
|
||||
virtual void SetHeader(const wxString& name, const wxString& value) = 0;
|
||||
virtual void SetHeader(const wxString& name, const wxString& value)
|
||||
{ m_headers[name] = value; }
|
||||
|
||||
const wxWebRequestHeaderMap& GetHeaders() const { return m_headers; }
|
||||
|
||||
static wxWebSession& GetDefault();
|
||||
|
||||
@@ -96,9 +147,10 @@ public:
|
||||
static bool IsBackendAvailable(const wxString& backend);
|
||||
|
||||
protected:
|
||||
wxWebSession() { }
|
||||
wxWebSession();
|
||||
|
||||
private:
|
||||
wxWebRequestHeaderMap m_headers;
|
||||
|
||||
static wxScopedPtr<wxWebSession> ms_defaultSession;
|
||||
static wxStringWebSessionFactoryMap ms_factoryMap;
|
||||
@@ -120,6 +172,8 @@ public:
|
||||
|
||||
const wxString& GetErrorDescription() const { return m_errorDescription; }
|
||||
|
||||
wxEvent* Clone() const wxOVERRIDE { return new wxWebRequestEvent(*this); }
|
||||
|
||||
private:
|
||||
wxWebResponse* m_response;
|
||||
wxString m_errorDescription;
|
||||
|
Reference in New Issue
Block a user