generateCurlCommand static method

String generateCurlCommand(
  1. DebugModel model, {
  2. bool redact = false,
})

Implementation

static String generateCurlCommand(DebugModel model, {bool redact = false}) {
  final buffer = StringBuffer('curl -X ${model.httpMethod}');

  model.requestHeadersView(redact: redact).forEach((key, value) {
    buffer.write(" \\\n  -H ${_shellQuote('$key: $value')}");
  });

  final body = model.requestData;
  if (body != null) {
    if (body is FormData) {
      for (final field in body.fields) {
        final value = redact && Redaction.isSensitive(field.key)
            ? Redaction.mask
            : field.value;
        buffer.write(" \\\n  -F ${_shellQuote('${field.key}=$value')}");
      }
      for (final file in body.files) {
        buffer.write(
          " \\\n  -F ${_shellQuote('${file.key}=@${file.value.filename ?? 'file'}')}",
        );
      }
    } else {
      final data = redact ? Redaction.redact(body) : body;
      final encoded = data is String ? data : LogFormatter.encode(data);
      buffer.write(" \\\n  -d ${_shellQuote(encoded)}");
    }
  }

  buffer.write(
    " \\\n  ${_shellQuote(redact ? Redaction.url(model.url) : model.url)}",
  );
  return buffer.toString();
}