MultipartParser.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * MultipartParser.h
8  *
9  * @author: 2019 - Slavey Karadzhov <slav@attachix.com>
10  *
11  ****/
12 
13 #pragma once
14 
19 #include "PartCheckerStream.h"
20 
21 #include "../multipart-parser/multipart_parser.h"
22 
28 {
29 public:
30  static MultipartParser* create(HttpRequest& request);
31 
32  size_t execute(const char* at, size_t length);
33 
34  static int readHeaderName(multipart_parser_t* p, const char* at, size_t length);
35  static int readHeaderValue(multipart_parser_t* p, const char* at, size_t length);
36  static int partBegin(multipart_parser_t* p);
37  static int partHeadersComplete(multipart_parser_t* p);
38  static int partData(multipart_parser_t* p, const char* at, size_t length);
39  static int partEnd(multipart_parser_t* p);
40  static int bodyEnd(multipart_parser_t* p);
41 
42  bool valid() const
43  {
44  return (boundary);
45  }
46 
47 private:
48  static multipart_parser_settings_t settings;
49 
50  HttpHeaderBuilder headerBuilder;
51  HttpHeaders incomingHeaders;
52  HttpRequest& request;
53 
54  String boundary;
55  multipart_parser_t parserEngine;
56  ReadWriteStream* stream = nullptr;
57 
58  MultipartParser(HttpRequest& request, const String& boundaryArg);
59  void resetHeaders();
60 };
61 
73 size_t formMultipartParser(HttpRequest& request, const char* at, int length);
static int partBegin(multipart_parser_t *p)
static int partEnd(multipart_parser_t *p)
static int bodyEnd(multipart_parser_t *p)
The String class.
Definition: WString.h:136
Encapsulates a set of HTTP header information.
Definition: HttpHeaders.h:34
size_t execute(const char *at, size_t length)
static int readHeaderName(multipart_parser_t *p, const char *at, size_t length)
size_t formMultipartParser(HttpRequest &request, const char *at, int length)
static int readHeaderValue(multipart_parser_t *p, const char *at, size_t length)
static MultipartParser * create(HttpRequest &request)
Encapsulates an incoming or outgoing request.
Definition: HttpRequest.h:36
static int partData(multipart_parser_t *p, const char *at, size_t length)
Wrapper for multipart-parser engine (c code).
Definition: MultipartParser.h:27
static int partHeadersComplete(multipart_parser_t *p)
Base class for read/write stream.
Definition: ReadWriteStream.h:19
Re-assembles headers from fragments via onHeaderField / onHeaderValue callbacks.
Definition: HttpHeaderBuilder.h:19
bool valid() const
Definition: MultipartParser.h:52