A collection of framework independent HTTP protocol utils.
Project description
httptools is a Python binding for the nodejs HTTP parser.
The package is available on PyPI: pip install httptools
.
APIs
httptools contains two classes httptools.HttpRequestParser
,
httptools.HttpResponseParser
(fulfilled through
llhttp) and a function for
parsing URLs httptools.parse_url
(through
http-parse for now).
See unittests for examples.
class HttpRequestParser:
def __init__(self, protocol):
"""HttpRequestParser
protocol -- a Python object with the following methods
(all optional):
- on_message_begin()
- on_url(url: bytes)
- on_header(name: bytes, value: bytes)
- on_headers_complete()
- on_body(body: bytes)
- on_message_complete()
- on_chunk_header()
- on_chunk_complete()
- on_status(status: bytes)
"""
def get_http_version(self) -> str:
"""Return an HTTP protocol version."""
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):
"""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``.
"""
def get_method(self) -> bytes:
"""Return HTTP request method (GET, HEAD, etc)"""
class HttpResponseParser:
"""Has all methods except ``get_method()`` that
HttpRequestParser has."""
def get_status_code(self) -> int:
"""Return the status code of the HTTP response"""
def parse_url(url: bytes):
"""Parse URL strings into a structured Python object.
Returns an instance of ``httptools.URL`` class with the
following attributes:
- schema: bytes
- host: bytes
- port: int
- path: bytes
- query: bytes
- fragment: bytes
- userinfo: bytes
"""
Development
-
Clone this repository with
git clone --recursive git@github.com:MagicStack/httptools.git
-
Create a virtual environment with Python 3:
python3 -m venv envname
-
Activate the environment with
source envname/bin/activate
-
Install development requirements with
pip install -e .[test]
-
Run
make
andmake test
.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for httptools-0.5.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8a34e4c0ab7b1ca17b8763613783e2458e77938092c18ac919420ab8655c8c1 |
|
MD5 | ee084b5661869bcb4c45b6b54f5b0835 |
|
BLAKE2b-256 | 126072ece7f1fbc47acdec3624bd2ffd2d36e01562a5b5e0c95d574d6a108c21 |
Hashes for httptools-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d9ebac23d2de960726ce45f49d70eb5466725c0087a078866043dad115f850f |
|
MD5 | 4c0473e7b8152d078a9e86edddd8cb5a |
|
BLAKE2b-256 | b635f1d5c8cb5efe2a227f3f7668c7d316dd54696015ee4eb4812adec9271b1a |
Hashes for httptools-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54465401dbbec9a6a42cf737627fb0f014d50dc7365a6b6cd57753f151a86ff0 |
|
MD5 | 9bec858869af8732e0121dfea76baee1 |
|
BLAKE2b-256 | 91728988169674e62ff1c602823f9fc29054ab3816d63dd16404266eb7d356f0 |
Hashes for httptools-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0297822cea9f90a38df29f48e40b42ac3d48a28637368f3ec6d15eebefd182f9 |
|
MD5 | 6e322ea2b1d8216c32f89fb73985dd48 |
|
BLAKE2b-256 | 6dee6d6103a36141ee8a183199f7abec84954ee4a48d614971dd72377c458fc4 |
Hashes for httptools-0.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 557be7fbf2bfa4a2ec65192c254e151684545ebab45eca5d50477d562c40f986 |
|
MD5 | 7c4ef304659ff0d1e3cf5a13d1626f9a |
|
BLAKE2b-256 | 2922dc0f821683c686ebef5ee9da5f05ec38c0fd932b7bd37a295ae8f60909f0 |
Hashes for httptools-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e5eefc58d20e4c2da82c78d91b2906f1a947ef42bd668db05f4ab4201a99f49 |
|
MD5 | 18976847bc151aa2691be2ae7c96ee74 |
|
BLAKE2b-256 | f9bbe785de3eddc7dacf57492ec8c8d694a45f81165947562d79af7a1b8eebf4 |
Hashes for httptools-0.5.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e67d4f8734f8054d2c4858570cc4b233bf753f56e85217de4dfb2495904cf02e |
|
MD5 | ce3beacd6bd0f56918469ad65f2d66de |
|
BLAKE2b-256 | 8cb131a84ebce7637bbb6dcf48b45a7b6b67f73ed2de8b7aa7ebcaa68cfff503 |
Hashes for httptools-0.5.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24bb4bb8ac3882f90aa95403a1cb48465de877e2d5298ad6ddcfdebec060787d |
|
MD5 | 21a29a03d76772428c0f286c5d2cc585 |
|
BLAKE2b-256 | c8a8d7f8460514812b84571dd2e3d0c40658c435e87613eefe60b88951e7de72 |
Hashes for httptools-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a47a34f6015dd52c9eb629c0f5a8a5193e47bf2a12d9a3194d231eaf1bc451a |
|
MD5 | 038fae81720f9779f6761a6268e31aa9 |
|
BLAKE2b-256 | 0b4b7eff331bd3e5e5dbc78d42ec2fff00c9b43fa6f8fe13a35913ac3827d6cb |
Hashes for httptools-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5230a99e724a1bdbbf236a1b58d6e8504b912b0552721c7c6b8570925ee0ccde |
|
MD5 | 5e911829cbd89508f7f592f09b69ea0e |
|
BLAKE2b-256 | 2e027bea7fbda63542ee191674254b124e8f77df02a53577f43d7c104281e8ee |
Hashes for httptools-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1d2357f791b12d86faced7b5736dea9ef4f5ecdc6c3f253e445ee82da579449 |
|
MD5 | 8dcbf1b38bb9f63d657501f8d5b9554d |
|
BLAKE2b-256 | 017265b1f74371b2673b6833663f653ef6c5575d3fc481df3053a38f90535b59 |
Hashes for httptools-0.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f90cd6fd97c9a1b7fe9215e60c3bd97336742a0857f00a4cb31547bc22560c2 |
|
MD5 | 9dcd3ed8658455994916eee12fe52cc9 |
|
BLAKE2b-256 | 2538b893e18382e2917117b9aeb1f521f897017c82f609fe699f5c04b360c2bc |
Hashes for httptools-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e90491a4d77d0cb82e0e7a9cb35d86284c677402e4ce7ba6b448ccc7325c5421 |
|
MD5 | 58e7df0b3c5e1cbf3081747ca941f782 |
|
BLAKE2b-256 | 2027d2d87f8bbd1380b611feeb6a56cf68aed05a4403c0b1777bcd385133c30a |
Hashes for httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51 |
|
MD5 | b092d7f9b8dd711df45b2de8bb952c61 |
|
BLAKE2b-256 | 7e49ff4b50d06cfabb4a4fe749fd2f166b5c771cd4ff20ca6e79d8688bf99b20 |
Hashes for httptools-0.5.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1af91b3650ce518d226466f30bbba5b6376dbd3ddb1b2be8b0658c6799dd450b |
|
MD5 | ffadfc30d74ff8c051a620fafb0ea3e7 |
|
BLAKE2b-256 | cacadc312063370780a4da0dd8494662a0260600daa3ef54ce33b19d1ba83d15 |
Hashes for httptools-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ffce9d81c825ac1deaa13bc9694c0562e2840a48ba21cfc9f3b4c922c16f372 |
|
MD5 | 093df1e53637bdb623a276e836108e31 |
|
BLAKE2b-256 | fb8b64c6cd4af7af7e0044047fd9b95c29ee6306685b65d6b835e55c5e1f257b |
Hashes for httptools-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50d4613025f15f4b11f1c54bbed4761c0020f7f921b95143ad6d58c151198142 |
|
MD5 | 306c2fb4271916a9081f91f0bf0e83d5 |
|
BLAKE2b-256 | 700f1a7fb32c0b8993a602ff55b4dc0d056611eb57e5958175a11aadb623e52c |
Hashes for httptools-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9423a2de923820c7e82e18980b937893f4aa8251c43684fa1772e341f6e06887 |
|
MD5 | 0bb09ffa7908f4ae7e342f40fabe32e6 |
|
BLAKE2b-256 | 554714076d706232108b071cbc3ad5bba40d3aebc550efa263b139f2ac9e76f5 |
Hashes for httptools-0.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca1b7becf7d9d3ccdbb2f038f665c0f4857e08e1d8481cbcc1a86a0afcfb62b2 |
|
MD5 | 1b2493ba5f3b856d64d625c7b381863e |
|
BLAKE2b-256 | 7981895467fb9dfaca61b6b8349b5ea49921e639b993f1e5f0c9c89270cd5d7e |
Hashes for httptools-0.5.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b098e4bb1174096a93f48f6193e7d9aa7071506a5877da09a783509ca5fff42 |
|
MD5 | 416dd63243ed3931887511af9dbfac9a |
|
BLAKE2b-256 | c047c1fce47b2813bb8c44ecb93771470dcf37c43c029859df91f18cd90256e4 |
Hashes for httptools-0.5.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64eba6f168803a7469866a9c9b5263a7463fa8b7a25b35e547492aa7322036b6 |
|
MD5 | 8caa3c1b4fa377879d64ddc2d1dd988d |
|
BLAKE2b-256 | 71bf5f195a14c5918a786d769661000817cc7b36ec200624c14996c65714d923 |
Hashes for httptools-0.5.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bede7ee075e54b9a5bde695b4fc8f569f30185891796b2e4e09e2226801d09bd |
|
MD5 | c4745208f862d50adbe146effa92b8ac |
|
BLAKE2b-256 | 55db9c186b05c805da3629638c76bef40ed657277a09de30a507c818d300e2ea |
Hashes for httptools-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa47ffcf70ba6f7848349b8a6f9b481ee0f7637931d91a9860a1838bfc586901 |
|
MD5 | 0850252a3b271e8de52ebcf33b5ed975 |
|
BLAKE2b-256 | eb4a5f1ad178cc244f91f81bd372fadfb104c7a2b4beee95354fb0d50946d835 |
Hashes for httptools-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b571b281a19762adb3f48a7731f6842f920fa71108aff9be49888320ac3e24d |
|
MD5 | 73010464bb0057b72b639a518f4c8acb |
|
BLAKE2b-256 | 0d52dcbd41f05291f62ef40491d126efa7724cad16adbd0c1e816f48909fa66c |
Hashes for httptools-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5e3088f4ed33947e16fd865b8200f9cfae1144f41b64a8cf19b599508e096bc |
|
MD5 | a00fcfa31ca213e96f4cf00290cc80cd |
|
BLAKE2b-256 | 8d69bb3dfc050e865f1b23757f786afbd0cd3c5afa60d47926acc640c204ecc9 |
Hashes for httptools-0.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c2a56b6aad7cc8f5551d8e04ff5a319d203f9d870398b94702300de50190f63 |
|
MD5 | e9a732cb9d3f2d452e5edfd2cd691f14 |
|
BLAKE2b-256 | 0e0c8a60a46803e9e86abb3ccf81643d07250d4c67bc4fd473017e7a96b47543 |
Hashes for httptools-0.5.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85b392aba273566c3d5596a0a490978c085b79700814fb22bfd537d381dd230c |
|
MD5 | 27094da02d57654914043be0588cac18 |
|
BLAKE2b-256 | e3ec01f9801e22d0923c01754c6ea767decdef4c343b680b78fbdd67ec74659c |
Hashes for httptools-0.5.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe9c766a0c35b7e3d6b6939393c8dfdd5da3ac5dec7f971ec9134f284c6c36d6 |
|
MD5 | 51f04640766c828f59d03883e5ae0888 |
|
BLAKE2b-256 | c61fa24d5b4eab7ceed683ffd205d3d84528cba7cb1775136fa1b119ae5b67b7 |
Hashes for httptools-0.5.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b65be160adcd9de7a7e6413a4966665756e263f0d5ddeffde277ffeee0576a5 |
|
MD5 | 3115b8917bef8d45f3b9e7aff7030396 |
|
BLAKE2b-256 | 9ce396eb5937fc68bc45c663e8ea6a004c815d8c7a3ea68d8e4073f834822ce1 |
Hashes for httptools-0.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6eeefd4435055a8ebb6c5cc36111b8591c192c56a95b45fe2af22d9881eee25 |
|
MD5 | 300daf9aee4084d17d65b590399de0c3 |
|
BLAKE2b-256 | 65a10f3199ff78000e3e0f774eeb35fcf7660c069f3de12d1460fea54b62a0fe |
Hashes for httptools-0.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d0c1044bce274ec6711f0770fd2d5544fe392591d204c68328e60a46f88843b |
|
MD5 | b13f93931cc8b36e69ab53f62839698b |
|
BLAKE2b-256 | dff844c3d0bd87e0b51082f9995f1ec11d88c45ad52ec5edcb3a3fb7b63a217c |
Hashes for httptools-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 550059885dc9c19a072ca6d6735739d879be3b5959ec218ba3e013fd2255a11b |
|
MD5 | f00d97329b8b8b6e6cb3e43c2c9e65a5 |
|
BLAKE2b-256 | ab306c4eed8d498f46c29d740732382251147a1e9c538ef1b393b87626eb9da0 |
Hashes for httptools-0.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a04fe458a4597aa559b79c7f48fe3dceabef0f69f562daf5c5e926b153817281 |
|
MD5 | ed8d731d05b4a51840c04d8b08079ee7 |
|
BLAKE2b-256 | 1197b7b66fd45134a8d4cf602bce68b94b617a67190817bcd03072db9cc5b8de |
Hashes for httptools-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cb8acf8f951363b617a8420768a9f249099b92e703c052f9a51b66342eea89b |
|
MD5 | d9b3ff4d34d43626eb113b7525726a2a |
|
BLAKE2b-256 | 5b53b090c1322e1939eb378dc093d8def142dfa67033f4e718fb7523acf01ee3 |
Hashes for httptools-0.5.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f222e1e9d3f13b68ff8a835574eda02e67277d51631d69d7cf7f8e07df678c86 |
|
MD5 | 69bcedcbb42fd4220d67b8cdd320d53d |
|
BLAKE2b-256 | ecef5ece2ed7d9f7af1ca4a757f716420ae4e28f985873910d63a1cabb027bb6 |
Hashes for httptools-0.5.0-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 850fec36c48df5a790aa735417dca8ce7d4b48d59b3ebd6f83e88a8125cde324 |
|
MD5 | 7df87b02f98db74090981d7f8fcd9ba9 |
|
BLAKE2b-256 | fe24abf869224c81d8136ca14221dfa90e71612ca723d8c02e975ef7987b8319 |
Hashes for httptools-0.5.0-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72ad589ba5e4a87e1d404cc1cb1b5780bfcb16e2aec957b88ce15fe879cc08ca |
|
MD5 | 316fa8475a5337b017767a6cc19ebb68 |
|
BLAKE2b-256 | bc994cb14f9a134ce6dfee3a7fc8d1ba9df4d672f20bb58e7aee83fd88080888 |
Hashes for httptools-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef1616b3ba965cd68e6f759eeb5d34fbf596a79e84215eeceebf34ba3f61fdc7 |
|
MD5 | 010ff8bb4955f2a3290980526108df7f |
|
BLAKE2b-256 | 282067d4efda0e6c81e4556d309ebf151cc073e365b86eeb4dc6897639e966ce |
Hashes for httptools-0.5.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3625a55886257755cb15194efbf209584754e31d336e09e2ffe0685a76cb4b60 |
|
MD5 | c2251d9b5be46e81e2479ad8dd41202e |
|
BLAKE2b-256 | 42805a7010e9d4f66ec3fb862f548c722bc4767645aa445c145c756b6f6f6cf2 |
Hashes for httptools-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f659d7a48401158c59933904040085c200b4be631cb5f23a7d561fbae593ec1f |
|
MD5 | 32a16c603bda28bb06ad794589b022bf |
|
BLAKE2b-256 | 8c7e3ca1f9df101ebc39561e1c093c217eb9e917440b0bc68110d4e2d999a8f3 |