diff options
| author | Louis Burda <dev@sinitax.com> | 2026-01-23 21:41:09 +0100 |
|---|---|---|
| committer | Louis Burda <dev@sinitax.com> | 2026-01-23 21:41:09 +0100 |
| commit | 65a71e1d9f04e930cbaa5a312395f0fb63c7eef9 (patch) | |
| tree | c0785f125f72d5ab10a89e3c7e086037f25ef871 /README.md | |
| download | httpdump-main.tar.gz httpdump-main.zip | |
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..db49664 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# httpdump + +Parse HTTP requests and responses into JSON. + +## Installation + +```bash +uv sync +``` + +## Usage + +```bash +# Parse HTTP request from stdin +nc -lp 8080 | uv run httpdump + +# Parse HTTP response +curl -si https://example.com | uv run httpdump --response + +# Parse from file +uv run httpdump request.txt +uv run httpdump --response response.txt +``` + +## Output Format + +### Request +```json +{ + "method": "POST", + "url": "/api/users?page=1", + "path": "/api/users", + "query_params": {"page": "1"}, + "headers": { + "raw_base64": "...", + "parsed": {"Content-Type": "application/json", "Host": "example.com"} + }, + "body": { + "raw_base64": "...", + "json": {"name": "John"} + } +} +``` + +### Response +```json +{ + "status_code": 200, + "status_text": "OK", + "headers": { + "raw_base64": "...", + "parsed": {"Content-Type": "application/json"} + }, + "body": { + "raw_base64": "...", + "json": {"id": 1} + } +} +``` + +## Body Parsing + +Body is parsed based on Content-Type: +- `application/json` → `body.json` +- `application/x-www-form-urlencoded` → `body.form` +- `multipart/form-data` → `body.multipart` + +Raw body is always available as base64 in `body.raw_base64`. + +## Options + +- `-r, --response` - Parse as HTTP response instead of request |
