import net.pterodactylus.rhynodge.states.HttpState;
import org.apache.http.HttpEntity;
+import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
*/
public class HttpQuery implements Query {
- /** The uri to request. */
private final String uri;
+ private final String proxyHost;
+ private final int proxyPort;
- /**
- * Creates a new HTTP query.
- *
- * @param uri
- * The uri to request
- */
public HttpQuery(String uri) {
+ this(uri, null, -1);
+ }
+
+ public HttpQuery(String uri, String proxyHost, int proxyPort) {
this.uri = uri;
+ this.proxyHost = proxyHost;
+ this.proxyPort = proxyPort;
}
//
@Override
@SuppressWarnings("deprecation")
public State state() {
- HttpClient httpClient = HttpClientBuilder.create()
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create()
.setSSLHostnameVerifier((hostname, session) -> true)
- .addInterceptorFirst(new ResponseContentEncoding()).build();
+ .addInterceptorFirst(new ResponseContentEncoding());
+ if ((proxyHost != null) && (proxyPort != -1)) {
+ httpClientBuilder.setProxy(new HttpHost(proxyHost, proxyPort));
+ }
+ HttpClient httpClient = httpClientBuilder.build();
HttpGet get = new HttpGet(uri);
try {
* @param searchTerms
* The terms to search for
*/
- public PirateBayEpisodeWatcher(String searchTerms) {
- super(createHttpQuery(searchTerms), createFilters(), createTrigger());
+ public PirateBayEpisodeWatcher(String searchTerms, String proxy) {
+ super(createHttpQuery(searchTerms, extractProxyHost(proxy), extractProxyPort(proxy)), createFilters(), createTrigger());
+ }
+
+ private static String extractProxyHost(String proxy) {
+ return proxy.split(":")[0];
+ }
+
+ private static int extractProxyPort(String proxy) {
+ return Integer.valueOf(proxy.split(":")[1]);
}
//
// STATIC METHODS
//
- /**
- * Creates the query of the watcher.
- *
- * @param searchTerms
- * The search terms of the query
- * @return The query of the watcher
- */
- private static Query createHttpQuery(String searchTerms) {
+ private static Query createHttpQuery(String searchTerms, String proxyHost, int proxyPort) {
try {
- return new HttpQuery("http://thepiratebay.org/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0");
+ return new HttpQuery("http://thepiratebay.org/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0", proxyHost, proxyPort);
} catch (UnsupportedEncodingException uee1) {
/* will not happen. */
return null;
* @param searchTerms
* The terms to search for
*/
- public PirateBayWatcher(String searchTerms) {
- super(createHttpQuery(searchTerms), createFilters(), createTrigger());
+ public PirateBayWatcher(String searchTerms, String proxy) {
+ super(createHttpQuery(searchTerms, extractProxyHost(proxy), extractProxyPort(proxy)), createFilters(), createTrigger());
+ }
+
+ private static String extractProxyHost(String proxy) {
+ return proxy.split(":")[0];
+ }
+
+ private static int extractProxyPort(String proxy) {
+ return Integer.valueOf(proxy.split(":")[1]);
}
//
* The search terms of the query
* @return The query of the watcher
*/
- private static Query createHttpQuery(String searchTerms) {
+ private static Query createHttpQuery(String searchTerms, String proxyHost, int proxyPort) {
try {
- return new HttpQuery("http://thepiratebay.org/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0");
+ return new HttpQuery("http://thepiratebay.org/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0", proxyHost, proxyPort);
} catch (UnsupportedEncodingException uee1) {
/* will not happen. */
return null;