Line data Source code
1 : import 'package:collection/collection.dart';
2 : import 'package:walletkit_dart/src/domain/extensions.dart';
3 :
4 : class ElectrumPeer {
5 : final String host;
6 :
7 : final String protocolVersion;
8 : final int? tcpPort;
9 : final int? sslPort;
10 : final String? pruningLimit;
11 :
12 0 : String get address => "$host:$tcpPort";
13 :
14 0 : const ElectrumPeer({
15 : required this.host,
16 : required this.protocolVersion,
17 : this.tcpPort,
18 : this.sslPort,
19 : required this.pruningLimit,
20 0 : }) : assert(tcpPort != null || sslPort != null);
21 :
22 0 : factory ElectrumPeer.fromJson({
23 : required String host,
24 : required List<dynamic> args,
25 : required String version,
26 : }) {
27 : final tcpPort = args
28 0 : .singleWhereOrNull((arg) => arg.toString().startsWith("t"))
29 0 : .toString()
30 0 : .substring(1)
31 0 : .toIntOrNull;
32 :
33 : final sslPort = args
34 0 : .singleWhereOrNull((arg) => arg.toString().startsWith("s"))
35 0 : .toString()
36 0 : .substring(1)
37 0 : .toIntOrNull;
38 :
39 0 : return ElectrumPeer(
40 : host: host,
41 : protocolVersion: version,
42 : pruningLimit: null,
43 : tcpPort: tcpPort,
44 : sslPort: sslPort,
45 : );
46 : }
47 :
48 0 : @override
49 : String toString() {
50 0 : return "$address ($protocolVersion)";
51 : }
52 : }
|