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 
18 
19 #include "../multipart-parser/multipart_parser.h"
20 
26 {
27 public:
28  static MultipartParser* create(HttpRequest& request);
29 
30  size_t execute(const char* at, size_t length);
31 
32  static int readHeaderName(multipart_parser_t* p, const char* at, size_t length);
33  static int readHeaderValue(multipart_parser_t* p, const char* at, size_t length);
34  static int partBegin(multipart_parser_t* p);
35  static int partHeadersComplete(multipart_parser_t* p);
36  static int partData(multipart_parser_t* p, const char* at, size_t length);
37  static int partEnd(multipart_parser_t* p);
38  static int bodyEnd(multipart_parser_t* p);
39 
40  bool valid() const
41  {
42  return (boundary);
43  }
44 
45 private:
46  MultipartParser(HttpRequest& request, const String& boundaryArg);
47 
48  static multipart_parser_settings_t settings;
49 
50  String headerName;
51  String headerValue;
52 
53  HttpRequest& request;
54 
55  String boundary;
56  multipart_parser_t parserEngine;
57  ReadWriteStream* stream = nullptr;
58 
59  int processHeader();
60 };
61 
73 size_t formMultipartParser(HttpRequest& request, const char* at, int length);
Wrapper for multipart-parser engine (c code).
Definition: MultipartParser.h:25
static int bodyEnd(multipart_parser_t *p)
size_t formMultipartParser(HttpRequest &request, const char *at, int length)
static MultipartParser * create(HttpRequest &request)
static int readHeaderName(multipart_parser_t *p, const char *at, size_t length)
The String class.
Definition: WString.h:136
static int partData(multipart_parser_t *p, const char *at, size_t length)
size_t execute(const char *at, size_t length)
static int partEnd(multipart_parser_t *p)
static int partBegin(multipart_parser_t *p)
static int readHeaderValue(multipart_parser_t *p, const char *at, size_t length)
Encapsulates an incoming or outgoing request.
Definition: HttpRequest.h:36
static int partHeadersComplete(multipart_parser_t *p)
Base class for read/write stream.
Definition: ReadWriteStream.h:19
bool valid() const
Definition: MultipartParser.h:40