fromJson static method
Parse one /v1/models manifest entry.
Implementation
static SyniModelOption fromJson(Map<String, dynamic> json) {
final id = json['id'] as String;
final displayName = json['display_name'] as String? ?? id;
final description = json['description'] as String? ?? '';
final optimizedFor = _strSet(json['optimized_for']);
final requires = _strSet(json['requires']);
final isDefault = json['default'] == true;
switch (json['kind']) {
case 'local':
return SyniLocalModel(
id: id,
displayName: displayName,
description: description,
optimizedFor: optimizedFor,
requires: requires,
isDefault: isDefault,
spec: SyniModelSpec.fromManifest(
id,
json['local'] as Map<String, dynamic>,
),
);
case 'cloud':
final cloud = json['cloud'] as Map<String, dynamic>? ?? const {};
return SyniCloudModel(
id: id,
displayName: displayName,
description: description,
optimizedFor: optimizedFor,
requires: requires,
isDefault: isDefault,
serviceModelId: cloud['service_model_id'] as String? ?? 'default',
);
default:
throw FormatException('unknown model kind: ${json['kind']}');
}
}