ModelArtifactType.fromJson constructor

ModelArtifactType.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory ModelArtifactType.fromJson(Map<String, dynamic> json) {
  final type = json['type'] as String?;
  switch (type) {
    case 'singleFile':
      final expected = json['expectedFiles'] != null
          ? ExpectedModelFiles.fromJson(
              json['expectedFiles'] as Map<String, dynamic>)
          : ExpectedModelFiles.none;
      return SingleFileArtifact(expectedFiles: expected);
    case 'archive':
      return ArchiveArtifact(
        archiveType: ArchiveType.values.firstWhere(
          (t) => t.rawValue == json['archiveType'],
          orElse: () => ArchiveType.zip,
        ),
        structure: ArchiveStructure.values.firstWhere(
          (s) => s.rawValue == json['structure'],
          orElse: () => ArchiveStructure.unknown,
        ),
        expectedFiles: json['expectedFiles'] != null
            ? ExpectedModelFiles.fromJson(
                json['expectedFiles'] as Map<String, dynamic>)
            : ExpectedModelFiles.none,
      );
    case 'multiFile':
      return MultiFileArtifact(
        files: (json['files'] as List<dynamic>)
            .map((f) =>
                ModelFileDescriptor.fromJson(f as Map<String, dynamic>))
            .toList(),
      );
    case 'custom':
      return CustomArtifact(strategyId: json['strategyId'] as String);
    case 'builtIn':
      return const BuiltInArtifact();
    default:
      return const SingleFileArtifact();
  }
}