deserializeWebAppMetadata function

WebAppMetadata deserializeWebAppMetadata(
  1. Uint8List bytes
)

Implementation

WebAppMetadata deserializeWebAppMetadata(Uint8List bytes) {
  final u = Unpacker(bytes);

  final magicByte = u.unpackInt();
  if (magicByte != metadataMagicByte) {
    throw 'Invalid metadata: Unsupported magic byte';
  }
  final typeAndVersion = u.unpackInt();
  if (typeAndVersion != metadataTypeWebApp) {
    throw 'Invalid metadata: Wrong metadata type';
  }

  u.unpackListLength();

  final name = u.unpackString();

  final tryFiles = u.unpackList().cast<String>();

  final errorPages = u.unpackMap().cast<int, String>();

  final length = u.unpackListLength();

  final Map<String, WebAppMetadataFileReference> paths = {};

  for (int i = 0; i < length; i++) {
    u.unpackListLength();
    final path = u.unpackString()!;
    final cid = CID.fromBytes(u.unpackBinary());
    paths[path] = WebAppMetadataFileReference(
      cid: cid,
      contentType: u.unpackString(),
    );
  }

  final extraMetadata = u.unpackMap().cast<int, dynamic>();

  final dm = WebAppMetadata(
    name: name,
    tryFiles: tryFiles,
    errorPages: errorPages,
    paths: paths,
    extraMetadata: ExtraMetadata(extraMetadata),
  );

  return dm;
}