mirror of
https://github.com/foss42/apidash.git
synced 2025-05-31 22:33:59 +08:00
Update curl.dart
This commit is contained in:
@ -1,8 +1,7 @@
|
|||||||
import 'package:apidash_core/consts.dart';
|
import 'package:apidash_core/apidash_core.dart';
|
||||||
import 'package:apidash_core/models/form_data_model.dart';
|
|
||||||
import 'package:args/args.dart';
|
import 'package:args/args.dart';
|
||||||
import 'package:curl_parser/utils/string.dart';
|
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
|
import '../utils/string.dart';
|
||||||
|
|
||||||
/// A representation of a cURL command in Dart.
|
/// A representation of a cURL command in Dart.
|
||||||
///
|
///
|
||||||
@ -37,7 +36,6 @@ class Curl extends Equatable {
|
|||||||
final bool form;
|
final bool form;
|
||||||
|
|
||||||
/// Form data list.
|
/// Form data list.
|
||||||
/// Currently, it is represented as a list of key-value pairs ([key, value]).
|
|
||||||
final List<FormDataModel>? formData;
|
final List<FormDataModel>? formData;
|
||||||
|
|
||||||
/// Allows insecure SSL connections.
|
/// Allows insecure SSL connections.
|
||||||
@ -126,16 +124,6 @@ class Curl extends Equatable {
|
|||||||
|
|
||||||
final result = parser.parse(splittedCurlString);
|
final result = parser.parse(splittedCurlString);
|
||||||
|
|
||||||
// A potential alternative to the above code
|
|
||||||
// final curlString = curlString.replaceAll("\\\n", " ");
|
|
||||||
// final tokens = shlex.split(curlString);
|
|
||||||
// final result = parser.parse(tokens);
|
|
||||||
// if (!result.arguments.contains('curl')) {
|
|
||||||
// throw Exception('Invalid cURL command');
|
|
||||||
// }
|
|
||||||
|
|
||||||
String? method = (result['request'] as String?)?.toUpperCase();
|
|
||||||
|
|
||||||
// Extract the request headers
|
// Extract the request headers
|
||||||
Map<String, String>? headers;
|
Map<String, String>? headers;
|
||||||
if (result['header'] != null) {
|
if (result['header'] != null) {
|
||||||
@ -160,11 +148,12 @@ class Curl extends Equatable {
|
|||||||
for (final formEntry in result['form']) {
|
for (final formEntry in result['form']) {
|
||||||
final pairs = formEntry.split('=');
|
final pairs = formEntry.split('=');
|
||||||
if (pairs.length != 2) {
|
if (pairs.length != 2) {
|
||||||
throw Exception('Form data is not in key=value format');
|
throw Exception(
|
||||||
|
'Form data entry $formEntry is not in key=value format');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handling the file or text type
|
// Handling the file or text type
|
||||||
FormDataModel formDataModel = pairs[1].startsWith('@')
|
var formDataModel = pairs[1].startsWith('@')
|
||||||
? FormDataModel(
|
? FormDataModel(
|
||||||
name: pairs[0],
|
name: pairs[0],
|
||||||
value: pairs[1].substring(1),
|
value: pairs[1].substring(1),
|
||||||
@ -179,7 +168,7 @@ class Curl extends Equatable {
|
|||||||
formData.add(formDataModel);
|
formData.add(formDataModel);
|
||||||
}
|
}
|
||||||
headers ??= <String, String>{};
|
headers ??= <String, String>{};
|
||||||
headers['Content-Type'] = 'multipart/form-data';
|
headers[kHeaderContentType] = ContentType.formdata.header;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle URL and query parameters
|
// Handle URL and query parameters
|
||||||
@ -190,7 +179,9 @@ class Curl extends Equatable {
|
|||||||
}
|
}
|
||||||
final uri = Uri.parse(url);
|
final uri = Uri.parse(url);
|
||||||
|
|
||||||
method = result['head'] == true ? 'HEAD' : (method ?? 'GET');
|
final method = result['head']
|
||||||
|
? 'HEAD'
|
||||||
|
: ((result['request'] as String?)?.toUpperCase() ?? 'GET');
|
||||||
final String? data = result['data'];
|
final String? data = result['data'];
|
||||||
final String? cookie = result['cookie'];
|
final String? cookie = result['cookie'];
|
||||||
final String? user = result['user'];
|
final String? user = result['user'];
|
||||||
|
Reference in New Issue
Block a user