ShadowSocksShareEntity.fromString constructor

ShadowSocksShareEntity.fromString(
  1. String link
)

Implementation

factory ShadowSocksShareEntity.fromString(String link) {
  final uri = parseAndValidate(link, const [scheme]);
  final options = ShadowSocksOptions.fromJson(
    QueryUtilities.fromQuery(uri.query),
  );

  final splitted = Base64Util.decode(uri.userInfo).split(':');
  final method = $EncryptionMethodEnum.decode(
    splitted[0],
    EncryptionMethod.none,
  );
  final is2022 = splitted.length == 3;

  return ShadowSocksShareEntity(
    address: uri.host,
    port: uri.port,
    options: options,
    method: method,
    password: is2022 ? splitted[1] : null,
    clientPassword: splitted[is2022 ? 2 : 1],
    remark: remarkFromFragment(uri.fragment, scheme, uri.port),
  );
}