Загрузить файлы в «venv/Lib/site-packages/httptools/parser»
This commit is contained in:
28
venv/Lib/site-packages/httptools/parser/__init__.py
Normal file
28
venv/Lib/site-packages/httptools/parser/__init__.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from .protocol import HTTPProtocol
|
||||
from .parser import HttpRequestParser, HttpResponseParser # NoQA
|
||||
from .errors import (
|
||||
HttpParserError,
|
||||
HttpParserCallbackError,
|
||||
HttpParserInvalidStatusError,
|
||||
HttpParserInvalidMethodError,
|
||||
HttpParserInvalidURLError,
|
||||
HttpParserUpgrade,
|
||||
)
|
||||
from .url_parser import parse_url
|
||||
|
||||
__all__ = (
|
||||
# protocol
|
||||
"HTTPProtocol",
|
||||
# parser
|
||||
"HttpRequestParser",
|
||||
"HttpResponseParser",
|
||||
# errors
|
||||
"HttpParserError",
|
||||
"HttpParserCallbackError",
|
||||
"HttpParserInvalidStatusError",
|
||||
"HttpParserInvalidMethodError",
|
||||
"HttpParserInvalidURLError",
|
||||
"HttpParserUpgrade",
|
||||
# url_parser
|
||||
"parse_url",
|
||||
)
|
||||
167
venv/Lib/site-packages/httptools/parser/cparser.pxd
Normal file
167
venv/Lib/site-packages/httptools/parser/cparser.pxd
Normal file
@@ -0,0 +1,167 @@
|
||||
from libc.stdint cimport int32_t, uint8_t, uint16_t, uint64_t
|
||||
|
||||
|
||||
cdef extern from "llhttp.h":
|
||||
struct llhttp__internal_s:
|
||||
int32_t _index
|
||||
void *_span_pos0
|
||||
void *_span_cb0
|
||||
int32_t error
|
||||
const char *reason
|
||||
const char *error_pos
|
||||
void *data
|
||||
void *_current
|
||||
uint64_t content_length
|
||||
uint8_t type
|
||||
uint8_t method
|
||||
uint8_t http_major
|
||||
uint8_t http_minor
|
||||
uint8_t header_state
|
||||
uint16_t flags
|
||||
uint8_t upgrade
|
||||
uint16_t status_code
|
||||
uint8_t finish
|
||||
void *settings
|
||||
ctypedef llhttp__internal_s llhttp__internal_t
|
||||
ctypedef llhttp__internal_t llhttp_t
|
||||
|
||||
ctypedef int (*llhttp_data_cb) (llhttp_t*,
|
||||
const char *at,
|
||||
size_t length) except -1
|
||||
|
||||
ctypedef int (*llhttp_cb) (llhttp_t*) except -1
|
||||
|
||||
struct llhttp_settings_s:
|
||||
llhttp_cb on_message_begin
|
||||
llhttp_data_cb on_url
|
||||
llhttp_data_cb on_status
|
||||
llhttp_data_cb on_header_field
|
||||
llhttp_data_cb on_header_value
|
||||
llhttp_cb on_headers_complete
|
||||
llhttp_data_cb on_body
|
||||
llhttp_cb on_message_complete
|
||||
llhttp_cb on_chunk_header
|
||||
llhttp_cb on_chunk_complete
|
||||
ctypedef llhttp_settings_s llhttp_settings_t
|
||||
|
||||
enum llhttp_type:
|
||||
HTTP_BOTH,
|
||||
HTTP_REQUEST,
|
||||
HTTP_RESPONSE
|
||||
ctypedef llhttp_type llhttp_type_t
|
||||
|
||||
enum llhttp_errno:
|
||||
HPE_OK,
|
||||
HPE_INTERNAL,
|
||||
HPE_STRICT,
|
||||
HPE_LF_EXPECTED,
|
||||
HPE_UNEXPECTED_CONTENT_LENGTH,
|
||||
HPE_CLOSED_CONNECTION,
|
||||
HPE_INVALID_METHOD,
|
||||
HPE_INVALID_URL,
|
||||
HPE_INVALID_CONSTANT,
|
||||
HPE_INVALID_VERSION,
|
||||
HPE_INVALID_HEADER_TOKEN,
|
||||
HPE_INVALID_CONTENT_LENGTH,
|
||||
HPE_INVALID_CHUNK_SIZE,
|
||||
HPE_INVALID_STATUS,
|
||||
HPE_INVALID_EOF_STATE,
|
||||
HPE_INVALID_TRANSFER_ENCODING,
|
||||
HPE_CB_MESSAGE_BEGIN,
|
||||
HPE_CB_HEADERS_COMPLETE,
|
||||
HPE_CB_MESSAGE_COMPLETE,
|
||||
HPE_CB_CHUNK_HEADER,
|
||||
HPE_CB_CHUNK_COMPLETE,
|
||||
HPE_PAUSED,
|
||||
HPE_PAUSED_UPGRADE,
|
||||
HPE_USER
|
||||
ctypedef llhttp_errno llhttp_errno_t
|
||||
|
||||
enum llhttp_flags:
|
||||
F_CONNECTION_KEEP_ALIVE,
|
||||
F_CONNECTION_CLOSE,
|
||||
F_CONNECTION_UPGRADE,
|
||||
F_CHUNKED,
|
||||
F_UPGRADE,
|
||||
F_CONTENT_LENGTH,
|
||||
F_SKIPBODY,
|
||||
F_TRAILING,
|
||||
F_LENIENT,
|
||||
F_TRANSFER_ENCODING
|
||||
ctypedef llhttp_flags llhttp_flags_t
|
||||
|
||||
enum llhttp_method:
|
||||
HTTP_DELETE,
|
||||
HTTP_GET,
|
||||
HTTP_HEAD,
|
||||
HTTP_POST,
|
||||
HTTP_PUT,
|
||||
HTTP_CONNECT,
|
||||
HTTP_OPTIONS,
|
||||
HTTP_TRACE,
|
||||
HTTP_COPY,
|
||||
HTTP_LOCK,
|
||||
HTTP_MKCOL,
|
||||
HTTP_MOVE,
|
||||
HTTP_PROPFIND,
|
||||
HTTP_PROPPATCH,
|
||||
HTTP_SEARCH,
|
||||
HTTP_UNLOCK,
|
||||
HTTP_BIND,
|
||||
HTTP_REBIND,
|
||||
HTTP_UNBIND,
|
||||
HTTP_ACL,
|
||||
HTTP_REPORT,
|
||||
HTTP_MKACTIVITY,
|
||||
HTTP_CHECKOUT,
|
||||
HTTP_MERGE,
|
||||
HTTP_MSEARCH,
|
||||
HTTP_NOTIFY,
|
||||
HTTP_SUBSCRIBE,
|
||||
HTTP_UNSUBSCRIBE,
|
||||
HTTP_PATCH,
|
||||
HTTP_PURGE,
|
||||
HTTP_MKCALENDAR,
|
||||
HTTP_LINK,
|
||||
HTTP_UNLINK,
|
||||
HTTP_SOURCE,
|
||||
HTTP_PRI,
|
||||
HTTP_DESCRIBE,
|
||||
HTTP_ANNOUNCE,
|
||||
HTTP_SETUP,
|
||||
HTTP_PLAY,
|
||||
HTTP_PAUSE,
|
||||
HTTP_TEARDOWN,
|
||||
HTTP_GET_PARAMETER,
|
||||
HTTP_SET_PARAMETER,
|
||||
HTTP_REDIRECT,
|
||||
HTTP_RECORD,
|
||||
HTTP_FLUSH
|
||||
ctypedef llhttp_method llhttp_method_t
|
||||
|
||||
void llhttp_init(llhttp_t* parser, llhttp_type_t type, const llhttp_settings_t* settings)
|
||||
|
||||
void llhttp_settings_init(llhttp_settings_t* settings)
|
||||
|
||||
llhttp_errno_t llhttp_execute(llhttp_t* parser, const char* data, size_t len)
|
||||
|
||||
void llhttp_resume_after_upgrade(llhttp_t* parser)
|
||||
|
||||
int llhttp_should_keep_alive(const llhttp_t* parser)
|
||||
|
||||
const char* llhttp_get_error_pos(const llhttp_t* parser)
|
||||
const char* llhttp_get_error_reason(const llhttp_t* parser)
|
||||
const char* llhttp_method_name(llhttp_method_t method)
|
||||
|
||||
void llhttp_set_error_reason(llhttp_t* parser, const char* reason);
|
||||
|
||||
void llhttp_set_lenient_headers(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_chunked_length(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_keep_alive(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_transfer_encoding(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_version(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_data_after_close(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_optional_lf_after_cr(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_optional_cr_before_lf(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_optional_crlf_after_chunk(llhttp_t* parser, bint enabled);
|
||||
void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, bint enabled);
|
||||
30
venv/Lib/site-packages/httptools/parser/errors.py
Normal file
30
venv/Lib/site-packages/httptools/parser/errors.py
Normal file
@@ -0,0 +1,30 @@
|
||||
__all__ = ('HttpParserError',
|
||||
'HttpParserCallbackError',
|
||||
'HttpParserInvalidStatusError',
|
||||
'HttpParserInvalidMethodError',
|
||||
'HttpParserInvalidURLError',
|
||||
'HttpParserUpgrade')
|
||||
|
||||
|
||||
class HttpParserError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class HttpParserCallbackError(HttpParserError):
|
||||
pass
|
||||
|
||||
|
||||
class HttpParserInvalidStatusError(HttpParserError):
|
||||
pass
|
||||
|
||||
|
||||
class HttpParserInvalidMethodError(HttpParserError):
|
||||
pass
|
||||
|
||||
|
||||
class HttpParserInvalidURLError(HttpParserError):
|
||||
pass
|
||||
|
||||
|
||||
class HttpParserUpgrade(Exception):
|
||||
pass
|
||||
Binary file not shown.
58
venv/Lib/site-packages/httptools/parser/parser.pyi
Normal file
58
venv/Lib/site-packages/httptools/parser/parser.pyi
Normal file
@@ -0,0 +1,58 @@
|
||||
from array import array
|
||||
from .protocol import HTTPProtocol
|
||||
|
||||
class HttpParser:
|
||||
def __init__(self, protocol: HTTPProtocol | object) -> None:
|
||||
"""The HTTP parser.
|
||||
|
||||
Args:
|
||||
protocol (HTTPProtocol): Callback interface for the parser.
|
||||
"""
|
||||
|
||||
def set_dangerous_leniencies(
|
||||
self,
|
||||
lenient_headers: bool | None = None,
|
||||
lenient_chunked_length: bool | None = None,
|
||||
lenient_keep_alive: bool | None = None,
|
||||
lenient_transfer_encoding: bool | None = None,
|
||||
lenient_version: bool | None = None,
|
||||
lenient_data_after_close: bool | None = None,
|
||||
lenient_optional_lf_after_cr: bool | None = None,
|
||||
lenient_optional_cr_before_lf: bool | None = None,
|
||||
lenient_optional_crlf_after_chunk: bool | None = None,
|
||||
lenient_spaces_after_chunk_size: bool | None = None,
|
||||
) -> None:
|
||||
"""Set dangerous leniencies for the parser."""
|
||||
|
||||
def get_http_version(self) -> str:
|
||||
"""Retrieve the HTTP protocol version e.g. "1.1"."""
|
||||
|
||||
def should_keep_alive(self) -> bool:
|
||||
"""Return `True` if keep-alive mode is preferred."""
|
||||
|
||||
def should_upgrade(self) -> bool:
|
||||
"""Return `True` if the parsed request is a valid Upgrade request.
|
||||
The method exposes a flag set just before on_headers_complete.
|
||||
Calling this method earlier will only yield `False`."""
|
||||
|
||||
def feed_data(self, data: bytes | bytearray | memoryview | array[int]) -> None:
|
||||
"""Feed data to the parser.
|
||||
|
||||
Will eventually trigger callbacks on the ``protocol`` object.
|
||||
|
||||
On HTTP upgrade, this method will raise an
|
||||
``HttpParserUpgrade`` exception, with its sole argument
|
||||
set to the offset of the non-HTTP data in ``data``.
|
||||
"""
|
||||
|
||||
class HttpRequestParser(HttpParser):
|
||||
"""Used for parsing http requests from the server side."""
|
||||
|
||||
def get_method(self) -> bytes:
|
||||
"""Retrieve the HTTP method of the request."""
|
||||
|
||||
class HttpResponseParser(HttpParser):
|
||||
"""Used for parsing http responses from the client side."""
|
||||
|
||||
def get_status_code(self) -> int:
|
||||
"""Retrieve the status code of the HTTP response."""
|
||||
Reference in New Issue
Block a user