Expose Request to ProxyProvider.
parent
244ade7b4c
commit
58fd08bcf8
|
@ -77,7 +77,7 @@ public class HttpClientDownloader extends AbstractDownloader {
|
||||||
}
|
}
|
||||||
CloseableHttpResponse httpResponse = null;
|
CloseableHttpResponse httpResponse = null;
|
||||||
CloseableHttpClient httpClient = getHttpClient(task.getSite());
|
CloseableHttpClient httpClient = getHttpClient(task.getSite());
|
||||||
Proxy proxy = proxyProvider != null ? proxyProvider.getProxy(task) : null;
|
Proxy proxy = proxyProvider != null ? proxyProvider.getProxy(request, task) : null;
|
||||||
HttpClientRequestContext requestContext = httpUriRequestConverter.convert(request, task.getSite(), proxy);
|
HttpClientRequestContext requestContext = httpUriRequestConverter.convert(request, task.getSite(), proxy);
|
||||||
Page page = Page.fail();
|
Page page = Page.fail();
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package us.codecraft.webmagic.proxy;
|
package us.codecraft.webmagic.proxy;
|
||||||
|
|
||||||
import us.codecraft.webmagic.Page;
|
import us.codecraft.webmagic.Page;
|
||||||
|
import us.codecraft.webmagic.Request;
|
||||||
import us.codecraft.webmagic.Task;
|
import us.codecraft.webmagic.Task;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -23,7 +24,23 @@ public interface ProxyProvider {
|
||||||
* Get a proxy for task by some strategy.
|
* Get a proxy for task by some strategy.
|
||||||
* @param task the download task
|
* @param task the download task
|
||||||
* @return proxy
|
* @return proxy
|
||||||
|
* @deprecated Use {@link #getProxy(Request, Task)} instead.
|
||||||
*/
|
*/
|
||||||
Proxy getProxy(Task task);
|
@Deprecated
|
||||||
|
default Proxy getProxy(Task task) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a proxy for the request.
|
||||||
|
*
|
||||||
|
* @param request the request
|
||||||
|
* @param task the download task
|
||||||
|
* @return proxy
|
||||||
|
* @since 0.9.0
|
||||||
|
*/
|
||||||
|
default Proxy getProxy(Request request, Task task) {
|
||||||
|
return this.getProxy(task);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package us.codecraft.webmagic.proxy;
|
package us.codecraft.webmagic.proxy;
|
||||||
|
|
||||||
import us.codecraft.webmagic.Page;
|
import us.codecraft.webmagic.Page;
|
||||||
|
import us.codecraft.webmagic.Request;
|
||||||
import us.codecraft.webmagic.Task;
|
import us.codecraft.webmagic.Task;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -44,7 +45,7 @@ public class SimpleProxyProvider implements ProxyProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Proxy getProxy(Task task) {
|
public Proxy getProxy(Request request, Task task) {
|
||||||
return proxies.get(incrForLoop());
|
return proxies.get(incrForLoop());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class SimpleProxyProviderTest {
|
||||||
Proxy originProxy1 = new Proxy("127.0.0.1", 1087);
|
Proxy originProxy1 = new Proxy("127.0.0.1", 1087);
|
||||||
Proxy originProxy2 = new Proxy("127.0.0.1", 1088);
|
Proxy originProxy2 = new Proxy("127.0.0.1", 1088);
|
||||||
SimpleProxyProvider proxyProvider = SimpleProxyProvider.from(originProxy1, originProxy2);
|
SimpleProxyProvider proxyProvider = SimpleProxyProvider.from(originProxy1, originProxy2);
|
||||||
Proxy proxy = proxyProvider.getProxy(TASK);
|
Proxy proxy = proxyProvider.getProxy(null, TASK);
|
||||||
assertThat(proxy).isEqualTo(originProxy1);
|
assertThat(proxy).isEqualTo(originProxy1);
|
||||||
proxy = proxyProvider.getProxy(TASK);
|
proxy = proxyProvider.getProxy(TASK);
|
||||||
assertThat(proxy).isEqualTo(originProxy2);
|
assertThat(proxy).isEqualTo(originProxy2);
|
||||||
|
|
Loading…
Reference in New Issue