toCurlCmd method

String toCurlCmd()

Implementation

String toCurlCmd() {
  String cmd = "curl";

  String header = headers
      .map((key, value) {
    if (key == "content-type" &&
        value.toString().contains("multipart/form-data")) {
      value = "multipart/form-data;";
    }
    return MapEntry(key, "-H '$key: $value'");
  })
      .values
      .join(" ");
  String url = "$baseUrl$path";
  if (queryParameters.isNotEmpty) {
    String query = queryParameters
        .map((key, value) {
      return MapEntry(key, "$key=$value");
    })
        .values
        .join("&");

    url += (url.contains("?")) ? query : "?$query";
  }
  if (method == "GET") {
    cmd += " $header '$url'";
  } else {
    Map<String, dynamic> files = {};
    String postData = "-d ''";
    if (data != null) {
      if (data is FormData) {
        FormData fdata = data as FormData;
        for (var element in fdata.files) {
          MultipartFile file = element.value;
          files[element.key] = "@${file.filename}";
        }
        for (var element in fdata.fields) {
          files[element.key] = element.value;
        }
        if (files.isNotEmpty) {
          postData = files
              .map((key, value) => MapEntry(key, "-F '$key=$value'"))
              .values
              .join(" ");
        }
      } else if (data is Map<String, dynamic>) {
        files.addAll(data);

        if (files.isNotEmpty) {
          postData = "-d '${json.encode(files).toString()}'";
        }
      }
    }

    String method = this.method.toString();
    cmd += " -X $method $postData $header '$url'";
  }

  return cmd;
}