generateTextMessage method

  1. @override
String generateTextMessage({
  1. TimeFormat timeFormat = TimeFormat.timeAndSeconds,
})

Internal method that generates a complete message about the event

See examples: TalkerLog -> TalkerLog.generateTextMessage TalkerException -> TalkerException.generateTextMessage TalkerError -> TalkerError.generateTextMessage

Implementation

@override
String generateTextMessage({
  TimeFormat timeFormat = TimeFormat.timeAndSeconds,
}) {
  final StringBuffer msg = StringBuffer();
  msg.write('[$title]');
  msg.write(' [${request.method}]');
  msg.writeln(' $message');

  final Map<String, String> headers = {...request.headers};

  // HTTP headers are case-insensitive by standard
  _replaceHiddenHeaders(headers);

  if (settings.printRequestCurl) {
    msg.writeln('[cURL] ${request.toCurl(headers: headers)}');
  }

  if (settings.printRequestHeaders && headers.isNotEmpty) {
    try {
      msg.writeln('Headers: ${convert(headers)}');
    } catch (error, stackTrace) {
      msg.writeln(
        'Headers: <failed to convert headers: $error\nstackTrace: $stackTrace>',
      );
    }
  }

  if (settings.printRequestData) {
    switch (request) {
      case http.Request req when req.body.isNotEmpty:
        late final dynamic jsonData;
        try {
          jsonData = jsonDecode(req.body);
        } catch (_) {
          jsonData = null;
        }

        try {
          if (jsonData != null) {
            msg.writeln('Data: ${convert(jsonData)}');
            break;
          } else {
            msg.writeln('Data: ${req.body}');
            break;
          }
        } catch (error, stackTrace) {
          msg.writeln(
            'Data: <failed to convert data: $error\nstackTrace: $stackTrace>',
          );
        }
        break;
      case http.MultipartRequest req
          when req.fields.isNotEmpty || req.files.isNotEmpty:
        msg.writeln('Data: ${convert(
          {
            ...req.fields,
            for (final http.MultipartFile file in req.files)
              file.field: file.filename ?? ''
          },
        )}');
        break;
      case Request req when req.body != null:
        try {
          msg.writeln('Data: ${convert(req.body)}');
        } catch (error, stackTrace) {
          msg.writeln(
            'Data: <failed to convert data: $error\nstackTrace: $stackTrace>',
          );
        }
        break;
      default:
        break;
    }
  }

  return msg.toString().trimRight();
}