1 /* Based on node-formidable by Felix Geisendörfer
2 * Igor Afonov - afonov@gmail.com - 2012
3 * MIT License - http://www.opensource.org/licenses/mit-license.php
5 #ifndef _multipart_parser_h
6 #define _multipart_parser_h
16 typedef struct multipart_parser multipart_parser;
17 typedef struct multipart_parser_settings multipart_parser_settings;
18 typedef struct multipart_parser_state multipart_parser_state;
20 typedef int (*multipart_data_cb) (multipart_parser*, const char *at, size_t length);
21 typedef int (*multipart_notify_cb) (multipart_parser*);
23 struct multipart_parser_settings {
24 multipart_data_cb on_header_field;
25 multipart_data_cb on_header_value;
26 multipart_data_cb on_part_data;
28 multipart_notify_cb on_part_data_begin;
29 multipart_notify_cb on_headers_complete;
30 multipart_notify_cb on_part_data_end;
31 multipart_notify_cb on_body_end;
34 multipart_parser* multipart_parser_init
35 (const char *boundary, const multipart_parser_settings* settings);
37 void multipart_parser_free(multipart_parser* p);
39 size_t multipart_parser_execute(multipart_parser* p, const char *buf, size_t len);
41 void multipart_parser_set_data(multipart_parser* p, void* data);
42 void * multipart_parser_get_data(multipart_parser* p);