fetchProxies method

  1. @override
Future<List<ProxyModel>> fetchProxies({
  1. int count = 20,
  2. bool onlyHttps = false,
  3. List<String>? countries,
  4. List<String>? regions,
  5. List<String>? isps,
})
override

Fetches proxies from various sources

count is the number of proxies to fetch onlyHttps filters to only return HTTPS proxies countries filters to only return proxies from specific countries regions filters to only return proxies from specific regions isps filters to only return proxies from specific ISPs

Implementation

@override
Future<List<ProxyModel>> fetchProxies({
  int count = 20,
  bool onlyHttps = false,
  List<String>? countries,
  List<String>? regions,
  List<String>? isps,
}) async {
  final proxies = <ProxyModel>[];

  // Try each enabled source until we have enough proxies
  for (final url in sourceConfig.getEnabledSourceUrls()) {
    if (proxies.length >= count) break;

    try {
      final sourceProxies = await _fetchFromSource(
        url,
        onlyHttps: onlyHttps,
        countries: countries,
        regions: regions,
        isps: isps,
      );

      proxies.addAll(sourceProxies);
    } catch (e) {
      // Continue to the next source if this one fails
      continue;
    }
  }

  // Return the requested number of proxies
  return proxies.take(count).toList();
}