getDefaultServer method

  1. @override
Future<ServerSelectionResponse?> getDefaultServer()
override

Implementation

@override
Future<ServerSelectionResponse?> getDefaultServer() async {
  try {
    if (await isInternetAvailable()) {
      const tag = 'token:"';
      var tokenUrl = Uri.parse('https://fast.com/app-a32983.js');
      var tokenResponse = await http.get(tokenUrl);
      if (tokenResponse.body.contains(tag)) {
        int start = tokenResponse.body.lastIndexOf(tag) + tag.length;
        String token = tokenResponse.body.substring(start, start + 32);
        var serverUrl = Uri.parse(
            'https://api.fast.com/netflix/speedtest/v2?https=true&token=$token&urlCount=5');
        var serverResponse = await http.get(serverUrl);
        var serverSelectionResponse =
            ServerSelectionResponse.fromJson(json.decode(serverResponse.body));
        if (serverSelectionResponse.targets?.isNotEmpty == true) {
          return serverSelectionResponse;
        }
      }
    }
  } catch (e) {
    if (logEnabled) {
      _logger.d(e);
    }
  }
  return null;
}