stack_wallet/lib/utilities/test_stellar_node_connection.dart

45 lines
1.2 KiB
Dart
Raw Normal View History

2023-08-22 16:33:24 +00:00
import 'dart:convert';
2024-05-27 23:56:22 +00:00
import 'package:stellar_flutter_sdk/stellar_flutter_sdk.dart';
import '../networking/http.dart' as http;
import '../services/tor_service.dart';
import 'prefs.dart';
2023-08-22 16:33:24 +00:00
Future<bool> testStellarNodeConnection(String host, int port) async {
2024-05-27 23:56:22 +00:00
final http.HTTP client = http.HTTP();
final Uri uri = Uri.parse("$host:$port");
2023-08-22 16:33:24 +00:00
2023-09-11 20:29:10 +00:00
final response = await client
.get(
url: uri,
headers: {'Content-Type': 'application/json'},
2023-09-15 19:51:20 +00:00
proxyInfo: Prefs.instance.useTor
? TorService.sharedInstance.getProxyInfo()
: null,
2023-09-11 20:29:10 +00:00
)
2024-05-27 23:56:22 +00:00
.timeout(
const Duration(milliseconds: 2000),
onTimeout: () async => http.Response(utf8.encode('Error'), 408),
);
2023-09-11 20:29:10 +00:00
if (response.code == 200) {
//Get chain height for sdk
2024-05-27 23:56:22 +00:00
final StellarSDK stellarSdk = StellarSDK(host);
final height = await stellarSdk.ledgers
.order(RequestBuilderOrder.DESC)
.limit(1)
.execute()
.then((value) => value.records!.first.sequence)
.onError((error, stackTrace) => throw ("Error getting chain height"));
2023-08-22 16:33:24 +00:00
if (height > 0) {
2023-09-11 20:29:10 +00:00
return true;
} else {
return false;
}
2023-08-22 16:33:24 +00:00
} else {
return false;
}
2023-09-11 20:29:10 +00:00
}