Curl Parser for Dart
A comprehensive Dart package for parsing curl commands into structured request objects and generating Dart HTTP code.
Features
- Parse curl command strings into structured
CurlRequest
objects - Support for all major curl options (200+ options)
- Convert parsed requests to JSON for storage or manipulation
- Generate Dart code using the
http
package to reproduce the curl request - Handle various authentication methods, headers, data formats, and more
Installation
Add this to your package's pubspec.yaml
file:
dependencies:
curl_request_parser: any
Then run:
dart pub get
Usage
Basic parsing
import 'package:curl_request_parser/curl_request_parser.dart';
void main() {
final curlCommand = 'curl -X POST "https://api.example.com/data" -H "Content-Type: application/json" -d \'{"name":"John"}\'';
final request = CurlParser.parse(curlCommand);
print('URL: ${request.url}');
print('Method: ${request.method}');
print('Headers: ${request.headers}');
print('Data: ${request.data}');
}
Generate Dart HTTP code
import 'package:curl_request_parser/curl_request_parser.dart';
void main() {
final curlCommand = 'curl -X POST "https://api.example.com/data" -H "Content-Type: application/json" -d \'{"name":"John"}\'';
final request = CurlParser.parse(curlCommand);
// Generate Dart code that reproduces this curl request
final dartCode = request.toDartHttpRequest();
print(dartCode);
}
Convert to JSON
import 'package:curl_request_parser/curl_request_parser.dart';
void main() {
final curlCommand = 'curl -X POST "https://api.example.com/data" -H "Content-Type: application/json" -d \'{"name":"John"}\'';
final request = CurlParser.parse(curlCommand);
// Convert to JSON for storage or transmission
final json = request.toJson();
print(json);
}
Supported Options
This package supports a comprehensive set of curl options, including:
- HTTP methods (
-X
,--request
) - Headers (
-H
,--header
) - Data options (
-d
,--data
,--data-binary
, etc.) - Form data (
-F
,--form
) - Authentication (
-u
,--user
,--oauth2-bearer
, etc.) - SSL/TLS options (
--cacert
,--cert
,--key
, etc.) - Connection options (
--connect-timeout
,--max-time
, etc.) - Proxy options (
-x
,--proxy
, etc.) - HTTP protocol options (
--http1.1
,--http2
, etc.) - And many more!
For a complete list of supported options, refer to the API documentation.
Example: Parsing Complex Curl Commands
final complexCurl = '''
curl -v -X PUT 'https://api.example.com/files/upload' \\
-H 'Content-Type: application/octet-stream' \\
-H 'Authorization: Bearer token123' \\
--connect-timeout 30 \\
--max-time 60 \\
--retry 3 \\
--compressed \\
-k \\
-T './data.bin' \\
-o './response.json'
''';
final request = CurlParser.parse(complexCurl);
print(request);
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Libraries
- curl_request_parser
- A Dart library for parsing curl commands into structured request objects and generating Dart HTTP code.