fromString static method

AtKey fromString(
  1. String key
)

Implementation

static AtKey fromString(String key) {
  var atKey = AtKey();
  var metaData = Metadata();
  if (key.startsWith(AT_PKAM_PRIVATE_KEY) ||
      key.startsWith(AT_PKAM_PUBLIC_KEY)) {
    atKey.key = key;
    atKey.metadata = metaData;
    return atKey;
  } else if (key.startsWith(AT_ENCRYPTION_PRIVATE_KEY)) {
    atKey.key = key.split('@')[0];
    atKey.sharedBy = key.split('@')[1];
    atKey.metadata = metaData;
    return atKey;
  }
  var keyParts = key.split(':');
  if (keyParts.length == 1) {
    atKey.sharedBy = keyParts[0].split('@')[1];
    atKey.key = keyParts[0].split('@')[0];
  } else {
    if (keyParts[0] == 'public') {
      metaData.isPublic = true;
    } else if (keyParts[0] == CACHED) {
      metaData.isCached = true;
      atKey.sharedWith = keyParts[1];
    } else {
      atKey.sharedWith = keyParts[0];
    }
    var keyArr;
    if (keyParts[0] == CACHED) {
      keyArr = keyParts[2].split('@');
    } else {
      keyArr = keyParts[1].split('@');
    }
    if (keyArr != null && keyArr.length == 2) {
      atKey.sharedBy = keyArr[1];
      atKey.key = keyArr[0];
    } else {
      atKey.key = keyArr[0];
    }
  }
  //remove namespace
  if (atKey.key != null && atKey.key!.contains('.')) {
    var namespaceIndex = atKey.key!.lastIndexOf('.');
    if (namespaceIndex > -1) {
      atKey.namespace = atKey.key!.substring(namespaceIndex + 1);
      atKey.key = atKey.key!.substring(0, namespaceIndex);
    }
  } else {
    metaData.namespaceAware = false;
  }
  atKey.metadata = metaData;
  return atKey;
}