Info.fromJson constructor
Implementation
factory Info.fromJson(Map<String, dynamic> json) {
try {
// Handle version field - can be either Map or String
Version version;
if (json['version'] is Map) {
version = Version.fromJson(json['version'] as Map<String, dynamic>);
} else {
// If it's a string, create a basic Version object
final versionStr = json['version'] as String;
version = Version(
semver: versionStr,
major: 0,
minor: 0,
patch: 0,
);
}
// Handle git field safely
Git git;
if (json['git'] is Map) {
git = Git.fromJson(json['git'] as Map<String, dynamic>);
} else if (json['git'] is String) {
git = Git(
branch: 'unknown',
commit: json['git'] as String,
commitTime: 0,
);
} else {
git = Git(branch: 'unknown', commit: 'unknown', commitTime: 0);
}
return Info(
version: version,
buildTime: json['buildTime'] as int,
git: git,
jvm: json['jvm'] as String,
lavaplayer: json['lavaplayer'] as String,
sourceManagers: (json['sourceManagers'] as List)
.map((e) => e.toString())
.toList(),
plugins: (json['plugins'] as List)
.map((e) => Plugin.fromJson(e as Map<String, dynamic>))
.toList(),
);
} catch (e) {
throw Exception('Failed to parse Info: $e\nJSON: $json');
}
}