buildSecure static method

Future<SwampConnection> buildSecure(
  1. Uri address,
  2. Cipher cipher, {
  3. String roomCodeEncoder(
    1. Uint8List
    ) = encodeRoomCode,
  4. Uint8List roomCodeDecoder(
    1. String
    ) = decodeRoomCode,
  5. String split = kDefaultSwampSplit,
  6. RoomFlags flags = const RoomFlags(),
})

Implementation

static Future<SwampConnection> buildSecure(
  Uri address,
  Cipher cipher, {
  String Function(Uint8List) roomCodeEncoder = encodeRoomCode,
  Uint8List Function(String) roomCodeDecoder = decodeRoomCode,
  String split = kDefaultSwampSplit,
  RoomFlags flags = const RoomFlags(),
}) async {
  var roomId = address.hasFragment ? address.fragment : null;
  SecretKey key;
  if (roomId != null) {
    var splitted = roomId.split(split);
    roomId = splitted[0];
    key = await cipher.newSecretKeyFromBytes(roomCodeDecoder(splitted[1]));
  } else {
    key = await cipher.newSecretKey();
  }
  final e2ee = E2EENetworkerPipe(cipher: cipher, secretKey: key);
  final connection = SwampConnection(
    server: address.replace(fragment: ''),
    roomId: roomId == null ? null : roomCodeDecoder(roomId),
    roomCodeEncoder: roomCodeEncoder,
    roomCodeDecoder: roomCodeDecoder,
    e2eePipe: e2ee,
    flags: flags,
    split: split,
  );
  return connection;
}