codekingpro/portable-devtools
115k
1from libc.stdint cimport int32_t, uint8_t, uint16_t, uint64_t
2
3
4cdef extern from "llhttp.h":
5 struct llhttp__internal_s:
6 int32_t _index
7 void *_span_pos0
8 void *_span_cb0
9 int32_t error
10 const char *reason
11 const char *error_pos
12 void *data
13 void *_current
14 uint64_t content_length
15 uint8_t type
16 uint8_t method
17 uint8_t http_major
18 uint8_t http_minor
19 uint8_t header_state
20 uint16_t flags
21 uint8_t upgrade
22 uint16_t status_code
23 uint8_t finish
24 void *settings
25 ctypedef llhttp__internal_s llhttp__internal_t
26 ctypedef llhttp__internal_t llhttp_t
27
28 ctypedef int (*llhttp_data_cb) (llhttp_t*,
29 const char *at,
30 size_t length) except -1
31
32 ctypedef int (*llhttp_cb) (llhttp_t*) except -1
33
34 struct llhttp_settings_s:
35 llhttp_cb on_message_begin
36 llhttp_data_cb on_url
37 llhttp_data_cb on_status
38 llhttp_data_cb on_header_field
39 llhttp_data_cb on_header_value
40 llhttp_cb on_headers_complete
41 llhttp_data_cb on_body
42 llhttp_cb on_message_complete
43 llhttp_cb on_chunk_header
44 llhttp_cb on_chunk_complete
45 ctypedef llhttp_settings_s llhttp_settings_t
46
47 enum llhttp_type:
48 HTTP_BOTH,
49 HTTP_REQUEST,
50 HTTP_RESPONSE
51 ctypedef llhttp_type llhttp_type_t
52
53 enum llhttp_errno:
54 HPE_OK,
55 HPE_INTERNAL,
56 HPE_STRICT,
57 HPE_LF_EXPECTED,
58 HPE_UNEXPECTED_CONTENT_LENGTH,
59 HPE_CLOSED_CONNECTION,
60 HPE_INVALID_METHOD,
61 HPE_INVALID_URL,
62 HPE_INVALID_CONSTANT,
63 HPE_INVALID_VERSION,
64 HPE_INVALID_HEADER_TOKEN,
65 HPE_INVALID_CONTENT_LENGTH,
66 HPE_INVALID_CHUNK_SIZE,
67 HPE_INVALID_STATUS,
68 HPE_INVALID_EOF_STATE,
69 HPE_INVALID_TRANSFER_ENCODING,
70 HPE_CB_MESSAGE_BEGIN,
71 HPE_CB_HEADERS_COMPLETE,
72 HPE_CB_MESSAGE_COMPLETE,
73 HPE_CB_CHUNK_HEADER,
74 HPE_CB_CHUNK_COMPLETE,
75 HPE_PAUSED,
76 HPE_PAUSED_UPGRADE,
77 HPE_USER
78 ctypedef llhttp_errno llhttp_errno_t
79
80 enum llhttp_flags:
81 F_CONNECTION_KEEP_ALIVE,
82 F_CONNECTION_CLOSE,
83 F_CONNECTION_UPGRADE,
84 F_CHUNKED,
85 F_UPGRADE,
86 F_CONTENT_LENGTH,
87 F_SKIPBODY,
88 F_TRAILING,
89 F_LENIENT,
90 F_TRANSFER_ENCODING
91 ctypedef llhttp_flags llhttp_flags_t
92
93 enum llhttp_method:
94 HTTP_DELETE,
95 HTTP_GET,
96 HTTP_HEAD,
97 HTTP_POST,
98 HTTP_PUT,
99 HTTP_CONNECT,
100 HTTP_OPTIONS,
101 HTTP_TRACE,
102 HTTP_COPY,
103 HTTP_LOCK,
104 HTTP_MKCOL,
105 HTTP_MOVE,
106 HTTP_PROPFIND,
107 HTTP_PROPPATCH,
108 HTTP_SEARCH,
109 HTTP_UNLOCK,
110 HTTP_BIND,
111 HTTP_REBIND,
112 HTTP_UNBIND,
113 HTTP_ACL,
114 HTTP_REPORT,
115 HTTP_MKACTIVITY,
116 HTTP_CHECKOUT,
117 HTTP_MERGE,
118 HTTP_MSEARCH,
119 HTTP_NOTIFY,
120 HTTP_SUBSCRIBE,
121 HTTP_UNSUBSCRIBE,
122 HTTP_PATCH,
123 HTTP_PURGE,
124 HTTP_MKCALENDAR,
125 HTTP_LINK,
126 HTTP_UNLINK,
127 HTTP_SOURCE,
128 HTTP_PRI,
129 HTTP_DESCRIBE,
130 HTTP_ANNOUNCE,
131 HTTP_SETUP,
132 HTTP_PLAY,
133 HTTP_PAUSE,
134 HTTP_TEARDOWN,
135 HTTP_GET_PARAMETER,
136 HTTP_SET_PARAMETER,
137 HTTP_REDIRECT,
138 HTTP_RECORD,
139 HTTP_FLUSH
140 ctypedef llhttp_method llhttp_method_t
141
142 void llhttp_init(llhttp_t* parser, llhttp_type_t type, const llhttp_settings_t* settings)
143
144 void llhttp_settings_init(llhttp_settings_t* settings)
145
146 llhttp_errno_t llhttp_execute(llhttp_t* parser, const char* data, size_t len)
147
148 void llhttp_resume_after_upgrade(llhttp_t* parser)
149
150 int llhttp_should_keep_alive(const llhttp_t* parser)
151
152 const char* llhttp_get_error_pos(const llhttp_t* parser)
153 const char* llhttp_get_error_reason(const llhttp_t* parser)
154 const char* llhttp_method_name(llhttp_method_t method)
155
156 void llhttp_set_error_reason(llhttp_t* parser, const char* reason);
157
158 void llhttp_set_lenient_headers(llhttp_t* parser, bint enabled);
159 void llhttp_set_lenient_chunked_length(llhttp_t* parser, bint enabled);
160 void llhttp_set_lenient_keep_alive(llhttp_t* parser, bint enabled);
161 void llhttp_set_lenient_transfer_encoding(llhttp_t* parser, bint enabled);
162 void llhttp_set_lenient_version(llhttp_t* parser, bint enabled);
163 void llhttp_set_lenient_data_after_close(llhttp_t* parser, bint enabled);
164 void llhttp_set_lenient_optional_lf_after_cr(llhttp_t* parser, bint enabled);
165 void llhttp_set_lenient_optional_cr_before_lf(llhttp_t* parser, bint enabled);
166 void llhttp_set_lenient_optional_crlf_after_chunk(llhttp_t* parser, bint enabled);
167 void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, bint enabled);
168 