getNextProxy method
Gets the next proxy from the rotation strategy
Implementation
Future<Proxy?> getNextProxy() async {
if (_validatedProxies.isEmpty) {
if (_usePreloadedProxies && _preloaderService != null) {
// Try to get preloaded proxies
final preloadedProxies = _preloaderService.getPreloadedProxies();
if (preloadedProxies.isNotEmpty) {
_validatedProxies = preloadedProxies;
_rotationStrategy.updateProxies(_validatedProxies);
} else {
// If no preloaded proxies, try to get validated proxies
try {
await getValidatedProxies();
} catch (e) {
// If we can't get validated proxies, return null
return null;
}
}
} else {
// If not using preloaded proxies, try to get validated proxies
try {
await getValidatedProxies();
} catch (e) {
// If we can't get validated proxies, return null
return null;
}
}
}
if (_validatedProxies.isEmpty) {
return null;
}
final proxy = _rotationStrategy.getNextProxy();
// Track proxy usage
if (proxy != null && _analyticsService != null) {
await _analyticsService.recordRequest(proxy, true, null, 'usage');
}
return proxy;
}