159 lines
3.4 KiB
Markdown
159 lines
3.4 KiB
Markdown
# curl-to-code-converter
|
|
|
|
A CLI tool that converts cURL commands into ready-to-use code snippets in multiple programming languages. Simply paste a cURL command and get clean, formatted code with proper headers, authentication, and body handling.
|
|
|
|
## Features
|
|
|
|
- Convert cURL to Python (requests)
|
|
- Convert cURL to JavaScript (fetch)
|
|
- Convert cURL to Go (net/http)
|
|
- Convert cURL to Ruby (Net::HTTP)
|
|
- Convert cURL to PHP (cURL)
|
|
- Convert cURL to Java (HttpURLConnection)
|
|
- Support for headers, authentication, JSON body
|
|
- Interactive CLI with verbose output
|
|
- Output to file or stdout
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Install from source
|
|
pip install -e .
|
|
|
|
# Or install directly
|
|
pip install curl-to-code-converter
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Basic Conversion
|
|
|
|
```bash
|
|
# Convert to Python (default)
|
|
curl-to-code 'curl https://api.example.com/data'
|
|
|
|
# Convert to JavaScript
|
|
curl-to-code 'curl https://api.example.com/data' -l javascript
|
|
|
|
# Convert to Go
|
|
curl-to-code 'curl https://api.example.com/data' -l go
|
|
|
|
# Convert to Ruby
|
|
curl-to-code 'curl https://api.example.com/data' -l ruby
|
|
|
|
# Convert to PHP
|
|
curl-to-code 'curl https://api.example.com/data' -l php
|
|
|
|
# Convert to Java
|
|
curl-to-code 'curl https://api.example.com/data' -l java
|
|
```
|
|
|
|
### With Headers and Data
|
|
|
|
```bash
|
|
# POST with JSON body
|
|
curl-to-code 'curl -X POST https://api.example.com -H "Content-Type: application/json" -d "{\"key\":\"value\"}"' -l python
|
|
|
|
# With authentication
|
|
curl-to-code 'curl -u user:pass https://api.example.com' -l python
|
|
|
|
# With custom headers
|
|
curl-to-code 'curl -H "Authorization: Bearer token" https://api.example.com' -l javascript
|
|
```
|
|
|
|
### Output Options
|
|
|
|
```bash
|
|
# Write to file
|
|
curl-to-code 'curl https://api.example.com' -o output.py
|
|
|
|
# Verbose output (shows parsed details)
|
|
curl-to-code 'curl https://api.example.com' --verbose
|
|
```
|
|
|
|
## Supported Options
|
|
|
|
| Option | Description |
|
|
|--------|-------------|
|
|
| `-l, --language` | Target language (python, javascript, go, ruby, php, java) |
|
|
| `-o, --output` | Output file path |
|
|
| `-v, --verbose` | Show verbose output |
|
|
|
|
## Supported cURL Options
|
|
|
|
- `-X, --request` - HTTP method
|
|
- `-H, --header` - Custom headers
|
|
- `-d, --data` - Request body
|
|
- `-u, --user` - Basic authentication
|
|
- `-A, --user-agent` - User agent header
|
|
- `--compressed` - Accept-Encoding header
|
|
- `-k, --insecure` - Skip SSL verification
|
|
- `-b, --cookie` - Cookie header
|
|
|
|
## Examples
|
|
|
|
### Python Output
|
|
```python
|
|
import requests
|
|
|
|
response = requests.post(
|
|
'https://api.example.com/data',
|
|
headers={'Content-Type': 'application/json'},
|
|
json={'key': 'value'}
|
|
)
|
|
|
|
print(response.status_code)
|
|
print(response.text)
|
|
```
|
|
|
|
### JavaScript Output
|
|
```javascript
|
|
const fetchData = async () => {
|
|
try {
|
|
const options = {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify({'key': 'value'})
|
|
};
|
|
|
|
const response = await fetch('https://api.example.com/data', options);
|
|
const data = await response.json();
|
|
console.log(data);
|
|
return data;
|
|
} catch (error) {
|
|
console.error('Error:', error);
|
|
}
|
|
};
|
|
|
|
fetchData();
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/curl-to-code-converter.git
|
|
cd curl-to-code-converter
|
|
|
|
# Install in development mode
|
|
pip install -e .
|
|
|
|
# Run tests
|
|
pytest tests/ -v
|
|
|
|
# Lint
|
|
ruff check .
|
|
|
|
# Type check
|
|
mypy curl_to_code_converter --ignore-missing-imports
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Python 3.7+
|
|
- requests
|
|
|
|
## License
|
|
|
|
MIT
|