5 #ifndef _INC_cHttpClient_H
6 #define _INC_cHttpClient_H
12 #include "../Net/cNetURL.h"
13 #include "../Net/cNetStream.h"
30 static const StrLen_t k_nLenBoundaryPrefix = 2;
31 static const StrLen_t k_nLenBoundary = (8 + 16);
41 static void GRAYCALL CreateBoundary(OUT
char* pszBoundary);
46 : m_eContentType(eContentType)
47 , m_sContentDisposition(sContentDisposition)
54 size_t get_PartLength()
const;
67 :
cHttpPart(eContentType, sContentDisposition)
80 if (pClient ==
nullptr)
94 :
cHttpPart(eContentType, sContentDisposition)
106 if (pClient ==
nullptr)
108 return pClient->
WriteStream(m_File, UINT_MAX, pProgress);
118 static const size_t k_MaxChunkSize = 1024 * 1024;
133 : m_bTransferEncodingChunked(bTransferEncodingChunked)
134 , m_bWaitForChunkHeader(bTransferEncodingChunked)
135 , m_TransferChunk(0, 0)
176 HRESULT Send_POST(
const char* pszReferer,
const char* pszArgs,
StrLen_t nLenArgs);
181 virtual cStringA get_ConnectName()
const override;
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAY_NAMES
Use GRAYNAME for string.
Definition: GrayCore.h:34
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define UNREFERENCED_PARAMETER(P)
< _WIN32 type thing. get rid of stupid warning.
Definition: SysTypes.h:299
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cHttpClient.h:113
cStreamQueue m_DecoderQueue
Must create an intermediate queue for processing chunked data with m_pDecoder.
Definition: cHttpClient.h:127
cStreamProgress m_TransferChunk
Progress of the current m_bTransferEncodingChunked.
Definition: cHttpClient.h:124
bool m_bTransferEncodingChunked
Are we chunk encoding? HTTP_TAG_TransferEncoding.
Definition: cHttpClient.h:122
cNewPtr< cStreamInput > m_pDecoder
Content-Encoding: deflate or gzip.
Definition: cHttpClient.h:128
cHeapBlock m_datablock
Definition: cHttpClient.h:120
cHttpClientBody(bool bTransferEncodingChunked)
Definition: cHttpClient.h:132
bool m_bWaitForChunkHeader
expecting a chunk header next?
Definition: cHttpClient.h:123
Definition: cHttpClient.h:145
cStream * get_Stream() const
Definition: cHttpClient.h:168
cNetURL m_url
The name of the host we are talking to. cNetAddrName -> cNetAddress.
Definition: cHttpClient.h:154
UNITTEST_FRIEND(cHttpClient)
void AttachStream(cStream *pStream)
Definition: cHttpClient.h:163
cStream * m_pStream
the data stream to/from the HTTP server. may be cNetSocket -> cNetStream (or SSL or other)
Definition: cHttpClient.h:157
const char *const m_pszAgentName
Who are we. Who is asking? e.g. I am a browser.
Definition: cHttpClient.h:153
Definition: cHttpClient.h:195
bool isConnected() const
Definition: cHttpClient.h:211
cNetStream m_Stream
cNetStream = a cNetSocket i can Seek() on.
Definition: cHttpClient.h:202
Definition: cHttpClient.h:87
virtual size_t get_BodyLength() const
Definition: cHttpClient.h:100
cHttpPartFile(MIME_TYPE eContentType=MIME_TEXT, cStringA sContentDisposition="")
Definition: cHttpClient.h:93
virtual HRESULT WriteBody(cStreamOutput *pClient, IStreamProgressCallback *pProgress=nullptr)
Definition: cHttpClient.h:104
cFile m_File
The local source file for the body data.
Definition: cHttpClient.h:91
virtual ~cHttpPartFile()
Definition: cHttpClient.h:97
Definition: cHttpClient.h:59
virtual ~cHttpPartStr()
Definition: cHttpClient.h:70
virtual size_t get_BodyLength() const
Definition: cHttpClient.h:73
virtual HRESULT WriteBody(cStreamOutput *pClient, IStreamProgressCallback *pProgress=nullptr)
Definition: cHttpClient.h:77
cStringA m_sBody
The body data string.
Definition: cHttpClient.h:63
cHttpPartStr(MIME_TYPE eContentType=MIME_TEXT, cStringA sContentDisposition="")
Definition: cHttpClient.h:66
Definition: cHttpClient.h:25
virtual size_t get_BodyLength() const =0
cHttpPart(MIME_TYPE eContentType=MIME_TEXT, cStringA sContentDisposition="")
Definition: cHttpClient.h:45
virtual ~cHttpPart()
Definition: cHttpClient.h:50
virtual HRESULT WriteBody(cStreamOutput *pClient, IStreamProgressCallback *pProgress=nullptr)=0
MIME_TYPE m_eContentType
HTTP_TAG_ContentType="text/plain" = MIME_TEXT.
Definition: cHttpClient.h:33
cStringA m_sContentDisposition
HTTP_TAG_ContentDisposition = "form-data; name="mdump"; filename="sdfsdf.txt"".
Definition: cHttpClient.h:34
Definition: cNetStream.h:20
bool isConnected() const
Definition: cNetStream.h:55
StrLen_t GetLength() const noexcept
Definition: cString.h:183
virtual STREAM_POS_t GetLength() const override
Definition: cFile.h:191
Definition: cIniSection.h:71
Definition: cStream.h:126
virtual HRESULT WriteString(const char *pszStr)
Definition: cStream.h:212
HRESULT WriteStream(cStreamInput &sInp, STREAM_POS_t nSizeMax=k_FILE_BLOCK_SIZE, IStreamProgressCallback *pProgress=nullptr, TIMESYSD_t nTimeout=0)
Copy cStreamInput to this stream.
Definition: cStream.cpp:34
Definition: cStreamQueue.h:19
Definition: cStream.h:456
static const TIMESYSD_t k_DMAX
Max diff in time.
Definition: cTimeSys.h:102
HTTPVERB_TYPE
Definition: cHttpCommon.h:36
UNITTEST2_PREDEF(cQuadtree)
MIME_TYPE
Definition: cMime.h:79
int StrLen_t
the length of a string in chars (bytes for UTF8, wchar_t for UNICODE). or offset in characters....
Definition: StrConst.h:32
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
ULONG_PTR STREAM_POS_t
NOT same as FILE_SIZE_t in 32 bit. Why not ?
Definition: cOSHandle.h:54
UINT64 FILE_SIZE_t
similar to STREAM_POS_t size_t
Definition: cFileStatus.h:31
Definition: cHttpCommon.h:46
Definition: cFileCopier.h:17
Definition: cStreamProgress.h:168