8cff05a196d02fdd98dcf1854a14388dfa604901
Some checks failed
CI / test (push) Has been cancelled
HTTP Convert
A powerful CLI tool and web interface that converts HTTP requests between different formats (cURL, HTTPie, fetch, and axios).
Features
- Bidirectional Format Conversion - Convert HTTP requests between cURL, HTTPie, fetch, and axios formats
- Interactive CLI Mode - Step-by-step wizard for building HTTP requests
- Syntax Highlighting - Colorized output for better readability
- Web Interface - Browser-based visual request construction tool
- Configuration Support - Store your preferences in a config file
Installation
From Source
# Clone the repository
git clone https://github.com/yourusername/http-convert.git
cd http-convert
# Install dependencies
pip install -e .
# Or install with dev dependencies
pip install -e ".[dev]"
Using pip
pip install http-convert
Usage
Command Line Interface
Convert a request
# Auto-detect input format
http-convert "curl 'https://api.example.com/users'" --to fetch
# Specify input format explicitly
http-convert "curl 'https://api.example.com/users'" --from curl --to httpie
Interactive Mode
http-convert interactive
This launches an interactive wizard to build HTTP requests step by step.
List Supported Formats
http-convert formats
Configuration
# Show current configuration
http-convert config --show
# Set default output format
http-convert config --set-format httpie
# Toggle syntax highlighting
http-convert config --toggle-highlight
# Toggle compact output
http-convert config --toggle-compact
# Reset to defaults
http-convert config --reset
Web Interface
# Start web interface (opens browser automatically)
http-convert web
# Custom host and port
http-convert web --host 0.0.0.0 --port 8080
Options
| Option | Description |
|---|---|
--from, -f |
Input format (auto-detected if not specified) |
--to, -t |
Output format (required) |
--compact/--no-compact |
Compact output without line breaks |
--highlight/--no-highlight |
Enable/disable syntax highlighting |
--config, -c |
Path to config file |
Supported Formats
cURL
curl -X POST 'https://api.example.com/users' \
-H 'Content-Type: application/json' \
-d '{"name": "John"}'
HTTPie
POST https://api.example.com/users \
Content-Type:application/json \
'{"name": "John"}'
Fetch
fetch('https://api.example.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({"name": "John"})
})
Axios
axios({
method: 'POST',
url: 'https://api.example.com/users',
headers: {
'Content-Type': 'application/json'
},
data: {
"name": "John"
}
})
Configuration File
The default configuration file is located at ~/.http-convert.yaml. You can also specify a custom config file using the --config option.
Example Configuration
default_format: curl
syntax_highlighting: true
compact_output: false
theme: monokai
Interactive Mode
The interactive mode guides you through building an HTTP request:
- Select HTTP method (GET, POST, PUT, PATCH, DELETE)
- Enter the URL
- Optionally add headers
- Optionally add query parameters
- Optionally add request body
- Preview your request
- Generate output in your chosen format
- Convert to another format if needed
Web Interface
The web interface provides:
- Visual request builder with form inputs
- Live preview of generated code
- Tabbed output for different formats
- Quick example templates
- Copy to clipboard functionality
- Parse existing requests from any supported format
Development
Running Tests
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=src/http_convert
Project Structure
http-convert/
├── src/http_convert/
│ ├── __init__.py
│ ├── cli.py # Click CLI commands
│ ├── models.py # Pydantic models
│ ├── parsers.py # Format parsers
│ ├── generators.py # Format generators
│ ├── highlighter.py # Syntax highlighting
│ ├── config.py # Configuration management
│ └── web.py # FastAPI web app
├── tests/
│ ├── test_models.py
│ ├── test_parsers.py
│ ├── test_generators.py
│ ├── test_cli.py
│ └── test_web.py
├── pyproject.toml
├── requirements.txt
└── README.md
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.