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_')
  };
}