mirror of
https://github.com/foss42/apidash.git
synced 2025-05-30 05:21:15 +08:00
Update curl_parser
This commit is contained in:
@ -1,8 +1,10 @@
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:args/args.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:seed/seed.dart';
|
||||
import '../utils/string.dart';
|
||||
|
||||
const kHeaderContentType = "Content-Type";
|
||||
|
||||
/// A representation of a cURL command in Dart.
|
||||
///
|
||||
/// The Curl class provides methods for parsing a cURL command string
|
||||
@ -164,7 +166,10 @@ class Curl extends Equatable {
|
||||
formData.add(formDataModel);
|
||||
}
|
||||
headers ??= <String, String>{};
|
||||
headers[kHeaderContentType] = ContentType.formdata.header;
|
||||
if (!(headers.containsKey(kHeaderContentType) ||
|
||||
headers.containsKey(kHeaderContentType.toLowerCase()))) {
|
||||
headers[kHeaderContentType] = "multipart/form-data";
|
||||
}
|
||||
}
|
||||
|
||||
// Handle URL and query parameters
|
||||
|
@ -19,9 +19,8 @@ environment:
|
||||
dependencies:
|
||||
args: ^2.5.0
|
||||
equatable: ^2.0.5
|
||||
seed: ^0.0.1
|
||||
shlex: ^2.0.2
|
||||
apidash_core:
|
||||
path: ../apidash_core
|
||||
|
||||
dev_dependencies:
|
||||
lints: ^2.1.0
|
||||
|
@ -1,5 +1,5 @@
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:curl_parser/curl_parser.dart';
|
||||
import 'package:seed/seed.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import 'dart:io';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:curl_parser/curl_parser.dart';
|
||||
import 'package:seed/seed.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
final apiUri = Uri.parse('https://api.apidash.dev');
|
||||
@ -49,6 +49,69 @@ void main() {
|
||||
);
|
||||
});
|
||||
|
||||
test(
|
||||
'parse POST request with multipart/form-data if not specified in headers',
|
||||
() {
|
||||
const curl = r'''curl -X POST 'https://api.apidash.dev/io/img' \
|
||||
-F "imfile=@/path/to/image.jpg" \
|
||||
-F "token=john"
|
||||
''';
|
||||
|
||||
expect(
|
||||
Curl.parse(curl),
|
||||
Curl(
|
||||
method: 'POST',
|
||||
uri: Uri.parse('https://api.apidash.dev/io/img'),
|
||||
headers: {"Content-Type": "multipart/form-data"},
|
||||
form: true,
|
||||
formData: [
|
||||
FormDataModel(
|
||||
name: "imfile",
|
||||
value: "/path/to/image.jpg",
|
||||
type: FormDataType.file,
|
||||
),
|
||||
FormDataModel(
|
||||
name: "token",
|
||||
value: "john",
|
||||
type: FormDataType.text,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
test(
|
||||
'parse POST request with multipart/form-data but some other content type provided by user',
|
||||
() {
|
||||
const curl = r'''curl -X POST 'https://api.apidash.dev/io/img' \
|
||||
-H 'content-type: some-data' \
|
||||
-F "imfile=@/path/to/image.jpg" \
|
||||
-F "token=john"
|
||||
''';
|
||||
|
||||
expect(
|
||||
Curl.parse(curl),
|
||||
Curl(
|
||||
method: 'POST',
|
||||
uri: Uri.parse('https://api.apidash.dev/io/img'),
|
||||
headers: {"content-type": "some-data"},
|
||||
form: true,
|
||||
formData: [
|
||||
FormDataModel(
|
||||
name: "imfile",
|
||||
value: "/path/to/image.jpg",
|
||||
type: FormDataType.file,
|
||||
),
|
||||
FormDataModel(
|
||||
name: "token",
|
||||
value: "john",
|
||||
type: FormDataType.text,
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
test('parse POST request with x-www-form-urlencoded', () {
|
||||
const curl = r'''curl -X 'POST' \
|
||||
'https://api.apidash.dev/io/form' \
|
||||
|
@ -1,5 +1,5 @@
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:curl_parser/curl_parser.dart';
|
||||
import 'package:seed/seed.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
|
Reference in New Issue
Block a user