Use proxy to access The Pirate Bay
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / queries / HttpQuery.java
index 8e2c242..c1c315f 100644 (file)
@@ -18,7 +18,6 @@
 package net.pterodactylus.rhynodge.queries;
 
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.concurrent.TimeUnit;
 
 import net.pterodactylus.rhynodge.Query;
@@ -27,18 +26,16 @@ import net.pterodactylus.rhynodge.states.FailedState;
 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;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.protocol.ResponseContentEncoding;
-import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.params.HttpConnectionParams;
 import org.apache.http.util.EntityUtils;
 
-import com.google.common.io.Closeables;
-
 /**
  * {@link Query} that performs an HTTP GET request to a fixed uri.
  *
@@ -46,17 +43,18 @@ import com.google.common.io.Closeables;
  */
 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;
        }
 
        //
@@ -69,9 +67,13 @@ public class HttpQuery implements Query {
        @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 {