TarHeaderModel.fromJson constructor

TarHeaderModel.fromJson(
  1. Object? json_
)

Returns a new instance from a JSON value. May throw if the value does not have the expected structure.

Implementation

factory TarHeaderModel.fromJson(Object? json_) {
  final json = json_ is Map
      ? _spec.fields.map((f) => json_[f.label]).toList(growable: false)
      : json_;
  return switch (json) {
    [
      final mode,
      final uid,
      final gid,
      final mtime,
      final username,
      final groupname,
      final deviceMajor,
      final deviceMinor,
    ] ||
    (
      final mode,
      final uid,
      final gid,
      final mtime,
      final username,
      final groupname,
      final deviceMajor,
      final deviceMinor,
    ) => TarHeaderModel(
      mode: Option.fromJson(mode, (some) => some! as int).value,
      uid: Option.fromJson(uid, (some) => bigIntFromJson(some)).value,
      gid: Option.fromJson(gid, (some) => bigIntFromJson(some)).value,
      mtime: Option.fromJson(mtime, (some) => bigIntFromJson(some)).value,
      username: Option.fromJson(
        username,
        (some) => some is String ? some : (some! as ParsedString).value,
      ).value,
      groupname: Option.fromJson(
        groupname,
        (some) => some is String ? some : (some! as ParsedString).value,
      ).value,
      deviceMajor: Option.fromJson(deviceMajor, (some) => some! as int).value,
      deviceMinor: Option.fromJson(deviceMinor, (some) => some! as int).value,
    ),
    _ => throw Exception('Invalid JSON $json_'),
  };
}