@@ -225,22 +225,22 @@ using MultipartFormDataItems = std::vector<MultipartFormData>;
225
225
using ContentReceiver =
226
226
std::function<bool (const char *data, size_t data_length)>;
227
227
228
- using MultipartContentReceiver =
229
- std::function<bool (const std::string& name, const char *data, size_t data_length)>;
230
-
231
228
using MultipartContentHeader =
232
229
std::function<bool (const std::string &name, const MultipartFile &file)>;
233
230
231
+ using MultipartContentReceiver =
232
+ std::function<bool (const std::string& name, const char *data, size_t data_length)>;
233
+
234
234
class ContentReader {
235
235
public:
236
236
using Reader = std::function<bool (ContentReceiver receiver)>;
237
- using MultipartReader = std::function<bool (MultipartContentReceiver receiver, MultipartContentHeader header )>;
237
+ using MultipartReader = std::function<bool (MultipartContentHeader header, MultipartContentReceiver receiver )>;
238
238
239
239
ContentReader (Reader reader, MultipartReader muitlpart_reader)
240
240
: reader_(reader), muitlpart_reader_(muitlpart_reader) {}
241
241
242
- bool operator ()(MultipartContentReceiver receiver, MultipartContentHeader header ) const {
243
- return muitlpart_reader_ (receiver, header );
242
+ bool operator ()(MultipartContentHeader header, MultipartContentReceiver receiver ) const {
243
+ return muitlpart_reader_ (header, receiver );
244
244
}
245
245
246
246
bool operator ()(ContentReceiver receiver) const {
@@ -591,13 +591,13 @@ class Server {
591
591
bool read_content_with_content_receiver (Stream &strm, bool last_connection,
592
592
Request &req, Response &res,
593
593
ContentReceiver receiver,
594
- MultipartContentReceiver multipart_receiver ,
595
- MultipartContentHeader multipart_header );
594
+ MultipartContentHeader multipart_header ,
595
+ MultipartContentReceiver multipart_receiver );
596
596
bool read_content_core (Stream &strm, bool last_connection,
597
597
Request &req, Response &res,
598
598
ContentReceiver receiver,
599
- MultipartContentReceiver multipart_receiver ,
600
- MultipartContentHeader mulitpart_header );
599
+ MultipartContentHeader mulitpart_header ,
600
+ MultipartContentReceiver multipart_receiver );
601
601
602
602
virtual bool process_and_close_socket (socket_t sock);
603
603
@@ -2796,22 +2796,24 @@ Server::write_content_with_provider(Stream &strm, const Request &req,
2796
2796
inline bool Server::read_content (Stream &strm, bool last_connection,
2797
2797
Request &req, Response &res) {
2798
2798
auto ret = read_content_core (strm, last_connection, req, res,
2799
+ // Regular
2799
2800
[&](const char *buf, size_t n) {
2800
2801
if (req.body .size () + n > req.body .max_size ()) { return false ; }
2801
2802
req.body .append (buf, n);
2802
2803
return true ;
2803
2804
},
2805
+ // Multipart
2806
+ [&](const std::string &name, const MultipartFile &file) {
2807
+ req.files .emplace (name, file);
2808
+ return true ;
2809
+ },
2804
2810
[&](const std::string &name, const char *buf, size_t n) {
2805
2811
// TODO: handle elements with a same key
2806
2812
auto it = req.files .find (name);
2807
2813
auto &content = it->second .content ;
2808
2814
if (content.size () + n > content.max_size ()) { return false ; }
2809
2815
content.append (buf, n);
2810
2816
return true ;
2811
- },
2812
- [&](const std::string &name, const MultipartFile &file) {
2813
- req.files .emplace (name, file);
2814
- return true ;
2815
2817
}
2816
2818
);
2817
2819
@@ -2827,18 +2829,18 @@ inline bool
2827
2829
Server::read_content_with_content_receiver (Stream &strm, bool last_connection,
2828
2830
Request &req, Response &res,
2829
2831
ContentReceiver receiver,
2830
- MultipartContentReceiver multipart_receiver ,
2831
- MultipartContentHeader multipart_header ) {
2832
+ MultipartContentHeader multipart_header ,
2833
+ MultipartContentReceiver multipart_receiver ) {
2832
2834
return read_content_core (strm, last_connection, req, res,
2833
- receiver, multipart_receiver, multipart_header );
2835
+ receiver, multipart_header, multipart_receiver );
2834
2836
}
2835
2837
2836
2838
inline bool
2837
2839
Server::read_content_core (Stream &strm, bool last_connection,
2838
2840
Request &req, Response &res,
2839
2841
ContentReceiver receiver,
2840
- MultipartContentReceiver multipart_receiver ,
2841
- MultipartContentHeader mulitpart_header ) {
2842
+ MultipartContentHeader mulitpart_header ,
2843
+ MultipartContentReceiver multipart_receiver ) {
2842
2844
detail::MultipartFormDataParser multipart_form_data_parser;
2843
2845
ContentReceiver out;
2844
2846
@@ -3001,9 +3003,9 @@ inline bool Server::routing(Request &req, Response &res, Stream &strm,
3001
3003
return read_content_with_content_receiver (strm, last_connection, req, res,
3002
3004
receiver, nullptr , nullptr );
3003
3005
},
3004
- [&](MultipartContentReceiver receiver, MultipartContentHeader header ) {
3006
+ [&](MultipartContentHeader header, MultipartContentReceiver receiver ) {
3005
3007
return read_content_with_content_receiver (strm, last_connection, req, res,
3006
- nullptr , receiver, header );
3008
+ nullptr , header, receiver );
3007
3009
}
3008
3010
);
3009
3011
0 commit comments