multipartData method

Stream<HttpMultiPartData> multipartData()

Implementation

Stream<HttpMultiPartData> multipartData() async* {
  if (headers.contentType == null) {
    throw Exception('Content-Type not found');
  }

  final boundary = headers.contentType!.parameters['boundary'];

  if (boundary == null) {
    throw Exception('Boundary not found');
  }

  final transformer = MimeMultipartTransformer(boundary);
  final parts = await transform<MimeMultipart>(transformer.cast()).toList();

  for (final part in parts) {
    final contentDisposition = part.headers['content-disposition'];
    part.headers.remove('content-disposition');

    yield HttpMultiPartData(
      {
        ...parseContentDisposition(contentDisposition),
        ...part.headers,
      },
      await part.fold<List<int>>([], (p, d) => [...p, ...d]),
    );
  }
}