getCurlCommand method

String getCurlCommand()

Implementation

String getCurlCommand() {
  var compressed = false;
  var curlCmd = "curl";
  curlCmd += " -X " + method;
  var headers = request!.headers;
  headers..remove('content-length');
  headers.forEach((key, value) {
    if ("Accept-Encoding" == key && "gzip" == value) {
      compressed = true;
    }
    curlCmd += " -H \'$key: $value\'";
  });

  if (request?.body != null && request?.body != '') {
    String? requestBody = jsonEncode(request?.body);
    // try to keep to a single line and use a subshell to preserve any line breaks
    curlCmd += " --data \$'" + requestBody.replaceAll("\n", "\\n") + "'";
  }

  if (request?.formDataFields != null) {
    var formDataFields = request?.formDataFields;
    if (formDataFields != null && formDataFields.isNotEmpty) {
      formDataFields.forEach((field) {
        curlCmd += " --form \'${field.name}=${field.value}\'";
      });
    }
  }

  if (request?.formDataFiles != null) {
    var formDataFiles = request?.formDataFiles;
    if (formDataFiles != null && formDataFiles.isNotEmpty) {
      formDataFiles.forEach((field) {
        curlCmd += " --form \'${field.fileName}=@${field.fileName}\'";
      });
    }
  }

  String query = '';
  if (request?.queryParameters != null) {
    var queryParams = request?.queryParameters;
    if (queryParams != null && queryParams.isNotEmpty) {
      query += "?";
      query += queryParams.entries
          .map((e) =>
              '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value)}')
          .join('&');
    }
  }

  curlCmd += ((compressed) ? " --compressed " : " ") +
      "\'${secure ? 'https://' : 'http://'}$server$endpoint$query\'";

  return curlCmd;
}