tokens);
- public void onFailure(int errorMessageId);
+ public void onFailure(String eMsg);
}
-
- public static void init(Context context) {
- if (mInit)
- return;
- mInit = true;
+ public EhClient(Context context) {
mContext = context;
- CookieManager cookieManager = new CookieManager(new ShapreCookieStore(context), CookiePolicy.ACCEPT_ALL);
+ CookieManager cookieManager = new CookieManager(new ShapreCookieStore(mContext), CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);
if (Config.isExhentai()) {
@@ -179,16 +135,8 @@ public class EhClient {
listHeader = E_HENTAI_LIST_HEADER;
detailHeader = E_HENTAI_DETAIL_HEADER;
}
- DownloadMangaManager.init();
- }
-
- /**
- * Is init
- *
- * @return True if init
- */
- public static boolean isInit() {
- return mInit;
+
+ mThreadPool = ((AppContext)(context.getApplicationContext())).getNetworkThreadPool();
}
public static void setHeader(boolean isExhentai) {
@@ -201,524 +149,193 @@ public class EhClient {
detailHeader = E_HENTAI_DETAIL_HEADER;
}
}
-
- private static Handler checkUpdateHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- String pageContext = ((CheckUpdatePackage)msg.obj).pageContext;
- OnCheckUpdateListener listener = ((CheckUpdatePackage)msg.obj).listener;
- if (msg.arg1 == 0)
- listener.onFailure(msg.what);
- else
- listener.onSuccess(pageContext);
- };
- };
-
- // Get Manga List
- private static class CheckUpdatePackage {
- public String pageContext;
- public OnCheckUpdateListener listener;
- public CheckUpdatePackage(String pageContext, OnCheckUpdateListener listener) {
- this.pageContext = pageContext;
- this.listener = listener;
- }
- }
-
- public static void checkUpdate(final OnCheckUpdateListener listener) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- int mOK = 0;
- int emsgId = R.string.em_unknown_error;
- StringBuffer sb = new StringBuffer();
- HttpURLConnection conn = null;
- try {
- URL url = new URL(UPDATE_API);
- conn = (HttpURLConnection) url.openConnection();
- conn.addRequestProperty("Accept-Encoding", "gzip");
- conn.setRequestProperty("User-Agent", userAgent);
- conn.setConnectTimeout(TIMEOUT);
- conn.setReadTimeout(TIMEOUT);
- conn.setDoOutput(true);
- conn.setDoInput(true);
- conn.setRequestMethod("POST");
- conn.setUseCaches(false);
- conn.setInstanceFollowRedirects(true);
-
- DataOutputStream out = new DataOutputStream(conn.getOutputStream());
- StringBuffer StrBuf = new StringBuffer();
- PackageManager pm = mContext.getPackageManager();
- PackageInfo pi = pm.getPackageInfo(mContext.getPackageName(), PackageManager.GET_ACTIVITIES);
- StrBuf.append("last\n").append(pi.versionName);
- out.writeBytes(StrBuf.toString());
- out.flush();
- out.close();
-
- conn.connect();
-
- getStringHUC(conn, sb);
- mOK = 1;
- } catch (MalformedURLException e) {
- emsgId = R.string.em_url_format_error;
- e.printStackTrace();
- } catch (ConnectTimeoutException e) {
- emsgId = R.string.em_timeout;
- e.printStackTrace();
- } catch (UnknownHostException e) {
- emsgId = R.string.em_no_network_2;
- e.printStackTrace();
- } catch (IOException e) {
- emsgId = R.string.em_network_error;
- e.printStackTrace();
- } catch (NameNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- if (conn != null)
- conn.disconnect();
- }
- Message msg = new Message();
- msg.what = emsgId;
- msg.arg1 = mOK;
- msg.obj = new CheckUpdatePackage(sb.toString(), listener);
- checkUpdateHandler.sendMessage(msg);
- }
- }).start();
- }
-
- private static Handler checkNetworkHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- OnCheckNetworkListener listener = (OnCheckNetworkListener) msg.obj;
- if (msg.arg1 == 0)
- listener.onFailure(msg.what);
- else
- listener.onSuccess();
- };
- };
-
- /**
- * Is network available and can reach host
- * @return Error message id or 0
- */
- public static void checkNetwork(final OnCheckNetworkListener listener) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- int mOK = 0;
- int emsgId = R.string.em_unknown_error;
-
- ConnectivityManager cm = (ConnectivityManager)mContext
- .getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mNetworkInfo = cm.getActiveNetworkInfo();
- if (mNetworkInfo == null || !mNetworkInfo.isAvailable())
- emsgId = R.string.em_no_network;
- else {
- Socket server = null;
- try {
- server = new Socket();
- InetSocketAddress address = new InetSocketAddress(HOST, 80);
- server.connect(address, 5000);
- mOK = 1;
- } catch (Exception e) {
- e.printStackTrace();
- emsgId = R.string.em_can_not_reach;
- } finally {
- if (server != null)
- try {
- server.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- Message msg = new Message();
- msg.what = emsgId;
- msg.arg1 = mOK;
- msg.obj = listener;
- checkNetworkHandler.sendMessage(msg);
- }
- }).start();
- }
-
- private static void getStringHUC(HttpURLConnection conn, StringBuffer sb)
- throws IOException {
- InputStream is = conn.getInputStream();
- String encoding = conn.getContentEncoding();
- if (encoding != null && encoding.equals("gzip"))
- is = new GZIPInputStream(is);
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- Util.copy(is, baos, 1024);
- sb.append(baos.toString("utf-8"));
- Util.closeStreamQuietly(is);
- Util.closeStreamQuietly(baos);
- }
-
- private static int post(String urlStr, String[][] args, StringBuffer sb) {
- HttpURLConnection conn = null;
- int errorMessageId = R.string.em_unknown_error;
-
- Log.d(TAG, "Post " + urlStr);
-
- URL url;
- try {
- url = new URL(urlStr);
- conn = (HttpURLConnection) url.openConnection();
- conn.addRequestProperty("Accept-Encoding", "gzip");
- conn.setRequestProperty("User-Agent", userAgent);
- conn.setConnectTimeout(TIMEOUT);
- conn.setReadTimeout(TIMEOUT);
- conn.setDoOutput(true);
- conn.setDoInput(true);
- conn.setRequestMethod("POST");
- conn.setUseCaches(false);
- conn.setInstanceFollowRedirects(true);
- conn.setRequestProperty("Content-Type",
- "application/x-www-form-urlencoded");
-
- DataOutputStream out = new DataOutputStream(conn.getOutputStream());
- StringBuffer StrBuf = new StringBuffer();
- for (String[] arg : args) {
- StrBuf.append(URLEncoder.encode(arg[0], "UTF-8"));
- StrBuf.append("=");
- StrBuf.append(URLEncoder.encode(arg[1], "UTF-8"));
- StrBuf.append("&");
- }
- out.writeBytes(StrBuf.toString());
- out.flush();
- out.close();
-
- conn.connect();
-
- getStringHUC(conn, sb);
- } catch (MalformedURLException e) {
- errorMessageId = R.string.em_url_format_error;
- e.printStackTrace();
- } catch (ConnectTimeoutException e) {
- errorMessageId = R.string.em_timeout;
- e.printStackTrace();
- } catch (UnknownHostException e) {
- errorMessageId = R.string.em_no_network_2;
- e.printStackTrace();
- } catch (IOException e) {
- errorMessageId = R.string.em_network_error;
- e.printStackTrace();
- } finally {
- if (conn != null)
- conn.disconnect();
- }
- return errorMessageId;
- }
-
- private static int postJson(String urlStr, String arg, StringBuffer sb) {
- HttpURLConnection conn = null;
- int errorMessageId = R.string.em_unknown_error;
-
- Log.d(TAG, "Post json " + urlStr);
-
- URL url;
-
- try {
- url = new URL(urlStr);
- conn = (HttpURLConnection) url.openConnection();
- conn.addRequestProperty("Accept-Encoding", "gzip");
- conn.setRequestProperty("User-Agent", userAgent);
- conn.setConnectTimeout(TIMEOUT);
- conn.setReadTimeout(TIMEOUT);
- conn.setDoOutput(true);
- conn.setDoInput(true);
- conn.setRequestMethod("POST");
- conn.setUseCaches(false);
- conn.setInstanceFollowRedirects(true);
- conn.setRequestProperty("Content-Type", "application/json");
- conn.setRequestProperty("Accept", "application/json");
-
- DataOutputStream out = new DataOutputStream(conn.getOutputStream());
- out.writeBytes(arg);
- out.flush();
- out.close();
-
- conn.connect();
-
- getStringHUC(conn, sb);
- } catch (MalformedURLException e) {
- errorMessageId = R.string.em_url_format_error;
- e.printStackTrace();
- } catch (ConnectTimeoutException e) {
- errorMessageId = R.string.em_timeout;
- e.printStackTrace();
- } catch (UnknownHostException e) {
- errorMessageId = R.string.em_no_network_2;
- e.printStackTrace();
- } catch (IOException e) {
- errorMessageId = R.string.em_network_error;
- e.printStackTrace();
- } finally {
- if (conn != null)
- conn.disconnect();
- }
- return errorMessageId;
- }
-
-
- /**
- *
- * @param urlStr
- * @param sb
- * StringBuffer sb should be empty
- * @return
- */
- // TODO change stringbuffer to other
- private static int get(String urlStr, StringBuffer sb) {
- HttpURLConnection conn = null;
- int errorMessageId = R.string.em_unknown_error;
-
- Log.d(TAG, "Get " + urlStr);
-
- try {
- URL url = new URL(urlStr);
- conn = (HttpURLConnection) url.openConnection();
- conn.addRequestProperty("Accept-Encoding", "gzip");
- conn.setRequestProperty("User-Agent", userAgent);
- conn.setConnectTimeout(TIMEOUT);
- conn.setReadTimeout(TIMEOUT);
- conn.connect();
- getStringHUC(conn, sb);
- } catch (MalformedURLException e) {
- errorMessageId = R.string.em_url_format_error;
- e.printStackTrace();
- } catch (ConnectTimeoutException e) {
- errorMessageId = R.string.em_timeout;
- e.printStackTrace();
- } catch (UnknownHostException e) {
- errorMessageId = R.string.em_no_network_2;
- e.printStackTrace();
- } catch (IOException e) {
- errorMessageId = R.string.em_network_error;
- e.printStackTrace();
- } finally {
- if (conn != null)
- conn.disconnect();
- }
- return errorMessageId;
- }
-
- public static boolean isLogin() {
+ public boolean isLogin() {
return mLogin;
}
- public static String getUsername() {
+ public String getUsername() {
return name;
}
- public static boolean hasLogin() {
- return mHasLogin;
- }
-
- // Logout
- private static Handler logoutHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- OnLogoutListener listener = (OnLogoutListener) msg.obj;
- if (msg.arg1 == 0)
- listener.onFailure(msg.what);
- else
- listener.onSuccess();
- };
- };
-
- private static class LogoutRunnable implements Runnable {
-
- private OnLogoutListener mListener;
-
- public LogoutRunnable(OnLogoutListener listener) {
- this.mListener = listener;
+ // Login
+ private class LoginRunnable implements Runnable {
+
+ private String username;
+ private String password;
+
+ public String eMsg;
+ public boolean ok;
+
+ public LoginRunnable(String username, String password) {
+ this.username = username;
+ this.password = password;
}
-
+
@Override
public void run() {
- int mOK = 0;
- int errorMessageId;
- StringBuffer sb = new StringBuffer();
- errorMessageId = get(logoutUrl, sb);
- if (sb.length() != 0) {
- String pageContent = sb.toString();
- if (pageContent.contains("You are now logged out
")) {
- mLogin = false;
- mHasLogin = false;
- mOK = 1;
- } else if (errorMessageId == R.string.em_unknown_error)
- errorMessageId = R.string.em_logout_error;
- }
- Message msg = new Message();
- msg.what = errorMessageId;
- msg.arg1 = mOK;
- msg.obj = mListener;
- logoutHandler.sendMessage(msg);
+ ok = false;
+ String[][] args = new String[][] {
+ new String[] { "UserName", username },
+ new String[] { "PassWord", password },
+ new String[] { "submit", "Log+me+in" },
+ new String[] { "CookieDate", "1" },
+ new String[] { "temporary_https", "on" }};
+ HttpHelper hp = new HttpHelper(mContext);
+ String pageContent = hp.post(loginUrl, args);
+ if (pageContent != null) {
+ if (pageContent.contains("
You are now logged in as: "))
+ ok = true;
+ else
+ eMsg = mContext.getString(R.string.em_logout_error);
+ } else
+ eMsg = hp.getEMsg();
}
}
-
- public static void logout(OnLogoutListener listener) {
- new Thread(new LogoutRunnable(listener)).start();
- }
-
- // Login
- private static Handler loginHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- OnLoginListener listener = (OnLoginListener) msg.obj;
- if (msg.arg1 == 0)
- listener.onFailure(msg.what);
- else
- listener.onSuccess();
- };
- };
-
- public static void login(final String username, final String password,
+
+ public void login(String username, String password,
final OnLoginListener listener) {
- new Thread(new Runnable() {
+
+ final LoginRunnable task = new LoginRunnable(username, password);
+ mThreadPool.submit(new Job