Bug fix curl_parser

This commit is contained in:
Ashita Prasad
2025-05-25 14:10:14 +05:30
parent 792e458d40
commit 948cf90e65
5 changed files with 60 additions and 3 deletions

View File

@@ -1,3 +1,7 @@
## 0.1.3
- Bugfix: Header with `:` in value gets parsed properly
## 0.1.2
- Bump dependencies.

View File

@@ -130,13 +130,18 @@ class Curl extends Equatable {
headers = <String, String>{};
for (var headerString in headersList) {
final splittedHeaderString = headerString.split(RegExp(r':\s*'));
if (splittedHeaderString.length != 2) {
if (splittedHeaderString.length > 2) {
headers.addAll({
splittedHeaderString[0]: splittedHeaderString.sublist(1).join(":")
});
} else if (splittedHeaderString.length < 2) {
throw Exception('Failed to split the `$headerString` header');
}
} else {
headers.addAll({splittedHeaderString[0]: splittedHeaderString[1]});
}
}
}
}
// Parse form data
List<FormDataModel>? formData;

View File

@@ -1,6 +1,6 @@
name: curl_parser
description: Parse cURL command to Dart object and convert Dart object to cURL command.
version: 0.1.2
version: 0.1.3
homepage: https://github.com/foss42/apidash/tree/main/packages/curl_parser
repository: https://github.com/foss42/apidash/tree/main/packages/curl_parser
issue_tracker: https://github.com/foss42/apidash/issues

View File

@@ -19,6 +19,30 @@ void main() {
},
);
test(
'parse another easy cURL',
() async {
expect(
Curl.parse(
r"""curl --location --request GET 'https://dummyimage.com/150/92c952' \
--header 'user-agent: Dart/3.8 (dart:io)' \
--header 'accept-encoding: gzip' \
--header 'content-length: 0' \
--header 'host: dummyimage.com'"""),
Curl(
method: 'GET',
uri: Uri.parse('https://dummyimage.com/150/92c952'),
headers: {
'user-agent': 'Dart/3.8 (dart:io)',
'accept-encoding': 'gzip',
'content-length': '0',
'host': 'dummyimage.com'
},
location: true),
);
},
);
test('parse POST request with multipart/form-data', () {
const curl = r'''curl -X POST 'https://api.apidash.dev/io/img' \
-H 'Content-Type: multipart/form-data' \

View File

@@ -32,6 +32,30 @@ void main() {
);
}, timeout: defaultTimeout);
test('parse cURL DevTools', () async {
expect(
splitAsCommandLineArgs(
r"""--request GET 'https://dummyimage.com/150/92c952' \
--header 'user-agent: Dart/3.8 (dart:io)' \
--header 'accept-encoding: gzip' \
--header 'content-length: 0' \
--header 'host: dummyimage.com'"""),
[
'--request',
'GET',
'https://dummyimage.com/150/92c952',
'--header',
'user-agent: Dart/3.8 (dart:io)',
'--header',
'accept-encoding: gzip',
'--header',
'content-length: 0',
'--header',
'host: dummyimage.com'
],
);
}, timeout: defaultTimeout);
test('parse cURL with body', () async {
expect(
splitAsCommandLineArgs(r"""--request POST \