HttpPayload.dataUrl constructor

HttpPayload.dataUrl(
  1. String dataUrl
)

A data url HTTP body.

Implementation

factory HttpPayload.dataUrl(String dataUrl) {
  if (!dataUrl.startsWith(_dataUrlMatcher)) {
    throw ArgumentError('Invalid data url: $dataUrl');
  }

  final dataUrlParts = dataUrl.split(',');
  final mediaTypeEncoding = dataUrlParts.first.replaceFirst('data:', '');
  final body = dataUrlParts.skip(1).join(',');

  if (mediaTypeEncoding.endsWith(';base64')) {
    return HttpPayload.bytes(
      base64Decode(body),
      contentType: mediaTypeEncoding.replaceFirst(';base64', ''),
    );
  }

  return HttpPayload.bytes(
    // data url encodes body, need to decode before converting it into bytes
    utf8.encode(Uri.decodeComponent(body)),
    contentType: mediaTypeEncoding,
  );
}