createCurlCommand method

String createCurlCommand(
  1. String url,
  2. String method, {
  3. String? body,
  4. Map<String, dynamic>? headers,
  5. Map<String, dynamic>? queryParams,
  6. FormData? formData,
})

Implementation

String createCurlCommand(String url, String method,
    {String? body,
    Map<String, dynamic>? headers,
    Map<String, dynamic>? queryParams,
    FormData? formData}) {
  final curl = StringBuffer('curl');
  curl.write(' -X "$method" ');
  curl.write(url);

  /// Add headers to cURL
  if (headers != null && headers.isNotEmpty) {
    for (final entry in headers.entries) {
      curl.write(' -H "${entry.key}: ${entry.value.toString()}"');
    }
  }

  /// Add query params to cURL
  if (queryParams != null && queryParams.isNotEmpty) {
    final params = queryParams.entries
        .map((entry) => '${entry.key}=${entry.value.toString()}')
        .join('&');
    curl.write(' -G "$params"');
  }

  /// Add body to cURL
  if (body != null && body.isNotEmpty && formData == null) {
    curl.write(' -d "${jsonEncode(body)}"');
  }

  if (formData != null) {
    for (var field in formData.fields) {
      curl.write(" -F '${field.key}=${field.value}'");
    }
    for (var file in formData.files) {
      final filename = file.value.filename ?? 'file';
      curl.write(" -F '${file.key}=@$filename'");
    }
  }

  return curl.toString();
}