getCurlCommand method

String getCurlCommand()

Implementation

String getCurlCommand() {
  var compressed = false;
  final buffer = StringBuffer("curl -X $method");
  final headers = Map<String, dynamic>.from(request?.headers ?? {});
  headers.remove('content-length');
  headers.forEach((key, value) {
    if ("Accept-Encoding" == key && "gzip" == value) {
      compressed = true;
    }
    buffer.write(" -H '$key: $value'");
  });

  final body = request?.body;
  if (body != null && body != '') {
    final String requestBody = jsonEncode(body);
    buffer.write(" --data \$'${requestBody.replaceAll("\n", "\\n")}'");
  }

  final formDataFields = request?.formDataFields;
  if (formDataFields != null && formDataFields.isNotEmpty) {
    for (final field in formDataFields) {
      buffer.write(" --form '${field.name}=${field.value}'");
    }
  }

  final formDataFiles = request?.formDataFiles;
  if (formDataFiles != null && formDataFiles.isNotEmpty) {
    for (final field in formDataFiles) {
      buffer.write(" --form '${field.fileName}=@${field.fileName}'");
    }
  }

  if (compressed) {
    buffer.write(" --compressed");
  }

  final targetUrl = uri.isNotEmpty
      ? uri
      : '${secure ? "https://" : "http://"}$server$endpoint';
  buffer.write(" '$targetUrl'");

  return buffer.toString();
}