encode method

String encode()

This event in the text/event-stream format, blank line included.

Implementation

String encode() {
  final buffer = StringBuffer();

  if (comment case final comment?) {
    for (final line in comment.split('\n')) {
      buffer.writeln(':$line');
    }
  }
  if (event case final event?) buffer.writeln('event:${_oneLine(event)}');
  if (id case final id?) buffer.writeln('id:${_oneLine(id)}');
  if (retry case final retry?) {
    buffer.writeln('retry:${retry.inMilliseconds}');
  }
  if (data case final data?) {
    // A newline inside the value would end the event, so each line is its
    // own `data:` field. The browser rejoins them with `\n`.
    for (final line in data.split('\n')) {
      buffer.writeln('data:$line');
    }
  }

  buffer.writeln();
  return buffer.toString();
}