You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

168 lines
4.9 KiB

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