Discovery.fromDiscoveryB64 constructor
Discovery.fromDiscoveryB64(
- String discoveryB64
This factory constructor is used to create a discovery class from a dicovery_b64 string.
Implementation
factory Discovery.fromDiscoveryB64(String discoveryB64) {
//Strip all after the first :
if (discoveryB64.contains(':')) {
discoveryB64 = discoveryB64.substring(0, discoveryB64.indexOf(':'));
}
//decode the base64 string to an array of bytes
final byteArray = base64Decode(discoveryB64);
final discoveryVersion = DiscoveryVersion(byteArray);
switch (discoveryVersion.version) {
case 3:
return DiscoveryLegacy(byteArray);
case 4:
switch (discoveryVersion.advancedVersion) {
case 0:
return DiscoveryAdvancedV0(byteArray);
case 1:
return DiscoveryAdvancedV1(byteArray);
case 2:
return DiscoveryAdvancedV2(byteArray);
case 3:
return DiscoveryAdvancedV3(byteArray);
case >= 4:
return DiscoveryAdvancedV4(byteArray);
default:
throw FormatException(
"The message contains an unknown advanced version (${discoveryVersion.advancedVersion})");
}
default:
throw FormatException(
"The message contains an unknown version (${discoveryVersion.version})");
}
}