getFallbackUri method

Future<String> getFallbackUri()

As per Binance's docs, there are 3 more clusters for API calls with names api1, api2 and api3.

Returns a fallback URI from one of these 3 clusters.

Throws a BinanceApiError if an error occurs or if none of the clusters are available.

Implementation

Future<String> getFallbackUri() async {
  _log('will try to find a fallback endpoint');
  String? fallbackUri;
  for (var i = 1; i < 4; i++) {
    final candidateUri = 'api$i.$binanceDomain';
    final ping = await _ping(candidateUri);
    if (ping) {
      _log('found a fallback URI at $candidateUri');
      fallbackUri = candidateUri;
      break;
    }
  }
  if (fallbackUri != null) {
    return fallbackUri;
  } else {
    throw const BinanceApiError(-1, 'no fallback URI found');
  }
}