diff --git a/pom.xml b/pom.xml
index acc0cd3..0574dfd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,11 @@
gson
2.4
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.2
+
junit
junit
diff --git a/src/main/java/kinosearch/core/Tools.java b/src/main/java/kinosearch/core/Tools.java
index 23cca73..388df5a 100644
--- a/src/main/java/kinosearch/core/Tools.java
+++ b/src/main/java/kinosearch/core/Tools.java
@@ -1,7 +1,7 @@
package kinosearch.core;
import kinosearch.core.browser.Browser;
-import kinosearch.core.browser.SimpleBrowser;
+import kinosearch.core.browser.ApacheHttpBrowser;
import kinosearch.core.warez.Hdrezka;
import kinosearch.core.warez.KinoWarez;
import kinosearch.core.warez.Onlinelife;
@@ -17,7 +17,7 @@ public class Tools {
private static Set kinoWarezSet;
public static Browser createBrowser() {
- return new SimpleBrowser();
+ return new ApacheHttpBrowser();
}
public static String SafeUrlEncode(String string, String encode) {
diff --git a/src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java b/src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java
new file mode 100644
index 0000000..0ceca0a
--- /dev/null
+++ b/src/main/java/kinosearch/core/browser/ApacheHttpBrowser.java
@@ -0,0 +1,98 @@
+/*
+ * DmitriyMX
+ * 2017-01-03
+ */
+package kinosearch.core.browser;
+
+import org.apache.http.Header;
+import org.apache.http.HttpMessage;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashSet;
+import java.util.Set;
+
+public class ApacheHttpBrowser implements Browser {
+ private Set headers = new HashSet<>();
+ private String encoding = "UTF-8";
+
+ @Override
+ public Browser setHeader(String name, String value) {
+ headers.add(new BasicHeader(name, value));
+ return this;
+ }
+
+ @Override
+ public String get(String url) {
+ HttpClient client = HttpClients.createDefault();
+ HttpGet request = new HttpGet(url);
+
+ setup_headers(request);
+
+ String result = "";
+ try {
+ HttpResponse response = client.execute(request);
+ result = readOutout(response.getEntity().getContent());
+ } catch (IOException ignore) {
+ // ignore
+ }
+ return result;
+ }
+
+ @Override
+ public String post(String url, String data) {
+ HttpClient client = HttpClients.createDefault();
+ HttpPost request = new HttpPost(url);
+
+ setup_headers(request);
+ request.addHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ String result = "";
+ try {
+ request.setEntity(new StringEntity(data));
+ HttpResponse response = client.execute(request);
+ result = readOutout(response.getEntity().getContent());
+ } catch (IOException ignore) {
+ // ignore
+ }
+
+ return result;
+ }
+
+ @Override
+ public void setEncoding(String encoding) {
+ this.encoding = (encoding == null ? "UTF-8" : encoding);
+ }
+
+ private String readOutout(InputStream inputStream) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ String str;
+ BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, encoding));
+ while ((str = br.readLine()) != null) {
+ sb.append(str).append('\n');
+ }
+ br.close();
+
+ return sb.toString();
+ }
+
+ private void setup_headers(HttpMessage httpMessage) {
+ httpMessage.addHeader("Connection", "close");
+ httpMessage.addHeader("Accept-Encoding", "deflate");
+ httpMessage.addHeader("User-Agent", "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36");
+
+ for (Header header : headers) {
+ httpMessage.addHeader(header);
+ }
+ }
+}
diff --git a/src/test/java/core/TestBrowser.java b/src/test/java/core/TestBrowser.java
index 274abf9..226d513 100644
--- a/src/test/java/core/TestBrowser.java
+++ b/src/test/java/core/TestBrowser.java
@@ -3,7 +3,7 @@ package core;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import kinosearch.core.browser.Browser;
-import kinosearch.core.browser.SimpleBrowser;
+import kinosearch.core.browser.ApacheHttpBrowser;
import static org.junit.Assert.*;
import org.junit.Test;
@@ -15,7 +15,7 @@ public class TestBrowser {
private final String header_name = "Mytestheader";
private Browser getBrowser() {
- return new SimpleBrowser();
+ return new ApacheHttpBrowser();
}
private void setup_headers(Browser browser) {