39#ifndef __HttpMultipartUpload_h
40#define __HttpMultipartUpload_h
42#include "HttpServer.h"
43#include "BaServerLib.h"
56 MultipartUpload_NoError=0,
57 MultipartUpload_ConnectionTerminated=-100,
58 MultipartUpload_NoMemory,
59 MultipartUpload_ParseError1,
60 MultipartUpload_ParseError2,
61 MultipartUpload_ParseError3,
62 MultipartUpload_ParseError4,
63 MultipartUpload_ParseError5,
64 MultipartUpload_ParseError6,
65 MultipartUpload_UserRetErr
119 const char* fileName,
120 const char* contentType,
121 const char* contentTransferEncoding);
153 MultipartUpload_ReadBoundaryTag,
154 MultipartUpload_ReadHeaders,
155 MultipartUpload_ReadFormData,
156 MultipartUpload_ReadFileData
157} MultipartUpload_States;
274 DoubleList boundaryStack;
285 char* contentTransferEncoding;
288 MultipartUpload_States state;
296 BaBool newBoundaryTag;
297 BaBool copyingHttpReqData;
305BA_API MultipartUpload_constructor(
317BA_API
int MultipartUpload_run(
320#define MultipartUpload_getServer(o) \
321 HttpConnection_getServer((HttpConnection*)(o))
324inline MultipartUpload::MultipartUpload(
333 MultipartUpload_constructor(
this, server, endOfReq, formData,
334 fileBegin, fileData, onError, size, allocator);
337 MultipartUpload_destructor(
this);
340 return MultipartUpload_start(
this,req);
343 return MultipartUpload_run(
this,req,setKeepAlive?TRUE:FALSE);
346 return MultipartUpload_getCon(
this); }
348 return MultipartUpload_getServer(
this);
struct MultipartUpload MultipartUpload
The MultipartUpload, which is an abstract base class, implements the functionality as specified in RF...
int(* MultipartUpload_FileData)(struct MultipartUpload *o, const U8 *data, U16 len)
Executed by MultipartUpload when a data chunk is available.
Definition: MultipartUpload.h:135
int run(HttpRequest *req, bool setKeepAlive=true)
Run multipart parsing synchronously for data already owned by the request.
Definition: MultipartUpload.h:342
HttpConnection * getCon(MultipartUpload *o)
Returns the internal active connection object.
Definition: MultipartUpload.h:345
~MultipartUpload()
Release buffers used while parsing the multipart stream.
Definition: MultipartUpload.h:336
void(* MultipartUpload_EndOfReq)(struct MultipartUpload *o)
Executed by MultipartUpload when a multipart upload is completed.
Definition: MultipartUpload.h:78
int(* MultipartUpload_FormData)(struct MultipartUpload *o, const char *name, const char *value)
Executed by MultipartUpload every time a form data element such as "text" is found in the multipart d...
Definition: MultipartUpload.h:95
void(* MultipartUpload_Error)(struct MultipartUpload *o, MultipartUpload_ErrorType e)
Executed by MultipartUpload if any errors are detected during parsing of the multipart data stream.
Definition: MultipartUpload.h:146
HttpServer * getServer()
Get the HttpServer instance.
Definition: MultipartUpload.h:347
int(* MultipartUpload_FileBegin)(struct MultipartUpload *o, const char *name, const char *fileName, const char *contentType, const char *contentTransferEncoding)
Executed by MultipartUpload when a file is found in the multipart data stream.
Definition: MultipartUpload.h:116
MultipartUpload_ErrorType
Error codes used by the callback function MultipartUpload_Error in interface class MultipartUpload.
Definition: MultipartUpload.h:55
int start(HttpRequest *req)
Start receiving data asynchronously.
Definition: MultipartUpload.h:339
Memory allocation and deallocation Interface class.
Definition: AllocatorIntf.h:83
Contains information about the physical socket connection.
Definition: HttpConnection.h:76
The HttpServer creates an HttpRequest object when the HttpServer parses a client request.
Definition: HttpServer.h:816
The Web Server.
Definition: HttpServer.h:2867
The MultipartUpload, which is an abstract base class, implements the functionality as specified in RF...
Definition: MultipartUpload.h:188