parseContentDisposition method

Map<String, String> parseContentDisposition(
  1. String? contentDisposition
)

Implementation

Map<String, String> parseContentDisposition(String? contentDisposition) {
  final output = <String, String>{};
  final pattern = RegExp('"(.+)"');

  if (contentDisposition == null) {
    return output;
  }

  final params = <String>[];

  for (final entry in contentDisposition.split(';')) {
    if (entry.contains('=')) {
      final parsed = entry.split('=');
      final key = parsed.first.trim();

      if (pattern.hasMatch(parsed.last)) {
        output[key] = pattern.firstMatch(parsed.last)!.group(1)!;
      } else {
        output[key] = parsed.last.trim();
      }
    } else {
      params.add(entry);
    }
  }

  output['params'] = params.join(',');

  return output;
}