mergeVaryHeader function

String mergeVaryHeader(
  1. Object? currentVary,
  2. String field
)

Merges field into the Vary header value currentVary.

Implementation

String mergeVaryHeader(Object? currentVary, String field) {
  var vary =
      (currentVary is Iterable ? currentVary.join(', ') : currentVary)
          ?.toString()
          .trim() ??
      '';

  if (vary.isEmpty || vary == '*') {
    return vary.isEmpty ? field : vary;
  }

  var fields = vary
      .split(',')
      .map((e) => e.trim())
      .where((e) => e.isNotEmpty)
      .toList();

  if (fields.any((e) => equalsIgnoreAsciiCase(e, field))) return vary;

  return [...fields, field].join(', ');
}