2025-04-27 07:49:33 -04:00

122 lines
5.9 KiB
C++

#ifndef _ASYNCWNT_H
#define _ASYNCWNT_H
#include <windows.h>
#include <wininet.h>
#include "unk.h"
#include "iasyncwnt.h"
class CAsyncWntImpl : public CCOMBase, public IAsyncWnt
{
public:
CAsyncWntImpl();
~CAsyncWntImpl();
STDMETHODIMP Init();
STDMETHODIMP SetUserAgent (LPCWSTR pwszUserAgent);
STDMETHODIMP SetLogFilePath (LPCWSTR pwszLogFilePath);
STDMETHODIMP Request (LPCWSTR pwszURL,
LPCWSTR pwszVerb,
LPCWSTR pwszHeaders,
ULONG nAcceptTypes,
LPCWSTR __RPC_FAR rgwszAcceptTypes[ ],
IAsyncWntCallback* pcallback,
DWORD dwContext);
STDMETHODIMP RequestWithStream (LPCWSTR pwszURL,
LPCWSTR pwszVerb,
LPCWSTR pwszHeaders,
ULONG nAcceptTypes,
LPCWSTR __RPC_FAR rgwszAcceptTypes[ ],
IStream* pStream,
IAsyncWntCallback* pcallback,
DWORD dwContext);
STDMETHODIMP RequestWithBuffer (LPCWSTR pwszURL,
LPCWSTR pWszVerb,
LPCWSTR pwszHeaders,
ULONG nAcceptTypes,
LPCWSTR __RPC_FAR rgwszAcceptTypes[ ],
LPBYTE pbBuffer,
UINT cbBuffer,
IAsyncWntCallback* pcallback,
DWORD dwContext);
private:
// internal utility functions
STDMETHODIMP _WriteRequestToLog(LPCWSTR pwszURL,
LPCWSTR pwszVerb,
ULONG nAcceptTypes,
LPCWSTR rgwszAcceptTypes[],
LPCWSTR pwszHeaders);
STDMETHODIMP _WriteResponseToLog(LPWSTR pwszVerb,
LPWSTR pwszURL,
UINT cchResponseHeaders,
LPWSTR pwszResponseHeaders,
DWORD dwStatusCode,
LPWSTR pwszStatusMsg,
LPWSTR pwszContentType,
UINT cbSent,
LPVOID pbResponse,
UINT bytesReadTotal);
STDMETHODIMP _MasterDriver (LPCWSTR pwszURL,
LPCWSTR pwszVerb,
LPCWSTR pwszHeaders,
ULONG nAcceptTypes,
LPCWSTR __RPC_FAR rgwszAcceptTypes[ ],
LPBYTE pbBuffer,
UINT cbBuffer,
IStream* pStream,
IAsyncWntCallback* pcallback,
DWORD dwContext);
STDMETHODIMP _MasterConnect_InternetOpen(HINTERNET* phInternet);
STDMETHODIMP _MasterConnect_InternetConnect(HINTERNET hInternet,
LPCWSTR pwszURL,
IAsyncWntCallback* pcallback,
HINTERNET* phConnection,
LPWSTR* ppwszPath);
STDMETHODIMP _MasterConnect_HttpOpenRequest(HINTERNET hSession,
LPCWSTR pwszVerb,
LPWSTR pwszPath,
UINT nAcceptTypes,
LPCWSTR __RPC_FAR rgwszAcceptTypes[ ],
HINTERNET* phRequest);
STDMETHODIMP _MasterConnect (LPCWSTR pwszURL,
LPCWSTR pwszVerb,
ULONG nAcceptTypes,
LPCWSTR __RPC_FAR rgwszAcceptTypes[ ],
IAsyncWntCallback* pcallback,
DWORD dwContext,
HINTERNET* phRequest);
STDMETHODIMP _MasterRequest (HINTERNET hRequest,
LPCWSTR pwszHeaders,
LPBYTE pbBuffer,
UINT cbBuffer,
IStream* pStream,
DWORD* pcbSent);
STDMETHODIMP _MasterListen (HINTERNET hRequest,
LPCWSTR pwszURL,
LPCWSTR pwszVerb,
DWORD cbSent,
IAsyncWntCallback* pcallback,
DWORD dwContext);
private:
// member variables
LPWSTR _pwszUserAgent;
LPWSTR _pwszLogFilePath;
};
typedef CUnkTmpl<CAsyncWntImpl> CAsyncWnt;
#endif // _ASYCNWNT_H