Skip to content

Commit

Permalink
Refactoring: separate Cookies into their own file
Browse files Browse the repository at this point in the history
  • Loading branch information
samueltardieu committed Apr 17, 2012
1 parent 73dda01 commit 8074ce7
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 50 deletions.
6 changes: 3 additions & 3 deletions main/src/cgeo/geocaching/activity/AbstractActivity.java
Expand Up @@ -6,7 +6,7 @@
import cgeo.geocaching.cgCache; import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.compatibility.Compatibility;
import cgeo.geocaching.network.Network; import cgeo.geocaching.network.Cookies;


import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
Expand Down Expand Up @@ -88,7 +88,7 @@ public void onCreate(Bundle savedInstanceState) {
cgBase.initialize(app); cgBase.initialize(app);


// Restore cookie store if needed // Restore cookie store if needed
Network.restoreCookieStore(Settings.getCookieStore()); Cookies.restoreCookieStore(Settings.getCookieStore());


ActivityMixin.keepScreenOn(this, keepScreenOn); ActivityMixin.keepScreenOn(this, keepScreenOn);
} }
Expand Down Expand Up @@ -131,7 +131,7 @@ public static LinearLayout createStarRating(final float value, final int count,


/** /**
* insert text into the EditText at the current cursor position * insert text into the EditText at the current cursor position
* *
* @param editText * @param editText
* @param insertText * @param insertText
* @param moveCursor * @param moveCursor
Expand Down
5 changes: 3 additions & 2 deletions main/src/cgeo/geocaching/cgeocaches.java
Expand Up @@ -17,6 +17,7 @@
import cgeo.geocaching.filter.IFilter; import cgeo.geocaching.filter.IFilter;
import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.maps.CGeoMap; import cgeo.geocaching.maps.CGeoMap;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.network.Network; import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters; import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.sorting.CacheComparator; import cgeo.geocaching.sorting.CacheComparator;
Expand Down Expand Up @@ -186,14 +187,14 @@ public void handleMessage(Message msg) {
dialog.setNegativeButton(res.getString(R.string.license_dismiss), new DialogInterface.OnClickListener() { dialog.setNegativeButton(res.getString(R.string.license_dismiss), new DialogInterface.OnClickListener() {


public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
Network.clearCookies(); Cookies.clearCookies();
dialog.cancel(); dialog.cancel();
} }
}); });
dialog.setPositiveButton(res.getString(R.string.license_show), new DialogInterface.OnClickListener() { dialog.setPositiveButton(res.getString(R.string.license_show), new DialogInterface.OnClickListener() {


public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
Network.clearCookies(); Cookies.clearCookies();
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/software/agreement.aspx?ID=0"))); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/software/agreement.aspx?ID=0")));
} }
}); });
Expand Down
3 changes: 2 additions & 1 deletion main/src/cgeo/geocaching/cgeoinit.java
Expand Up @@ -7,6 +7,7 @@
import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.maps.MapProviderFactory; import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.network.Login; import cgeo.geocaching.network.Login;
import cgeo.geocaching.network.Network; import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters; import cgeo.geocaching.network.Parameters;
Expand Down Expand Up @@ -822,7 +823,7 @@ public void onClick(View arg0) {
loginDialog.setCancelable(false); loginDialog.setCancelable(false);


Settings.setLogin(username, password); Settings.setLogin(username, password);
Network.clearCookies(); Cookies.clearCookies();


(new Thread() { (new Thread() {


Expand Down
47 changes: 47 additions & 0 deletions main/src/cgeo/geocaching/network/Cookies.java
@@ -0,0 +1,47 @@
package cgeo.geocaching.network;

import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.CookieStore;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.cookie.BasicClientCookie;

public abstract class Cookies {

private static boolean cookieStoreRestored = false;
final static CookieStore cookieStore = new BasicCookieStore();

public static void restoreCookieStore(final String oldCookies) {
if (!cookieStoreRestored) {
clearCookies();
if (oldCookies != null) {
for (final String cookie : StringUtils.split(oldCookies, ';')) {
final String[] split = StringUtils.split(cookie, "=", 3);
if (split.length == 3) {
final BasicClientCookie newCookie = new BasicClientCookie(split[0], split[1]);
newCookie.setDomain(split[2]);
cookieStore.addCookie(newCookie);
}
}
}
cookieStoreRestored = true;
}
}

public static String dumpCookieStore() {
StringBuilder cookies = new StringBuilder();
for (final Cookie cookie : cookieStore.getCookies()) {
cookies.append(cookie.getName());
cookies.append('=');
cookies.append(cookie.getValue());
cookies.append('=');
cookies.append(cookie.getDomain());
cookies.append(';');
}
return cookies.toString();
}

public static void clearCookies() {
cookieStore.clear();
}
}
6 changes: 3 additions & 3 deletions main/src/cgeo/geocaching/network/Login.java
Expand Up @@ -86,7 +86,7 @@ public static StatusCode login() {
return StatusCode.NO_ERROR; // logged in return StatusCode.NO_ERROR; // logged in
} }


Network.clearCookies(); Cookies.clearCookies();
Settings.setCookieStore(null); Settings.setCookieStore(null);


final Parameters params = new Parameters( final Parameters params = new Parameters(
Expand All @@ -111,7 +111,7 @@ public static StatusCode login() {
Log.i("Successfully logged in Geocaching.com as " + login.left); Log.i("Successfully logged in Geocaching.com as " + login.left);


Login.switchToEnglish(loginData); Login.switchToEnglish(loginData);
Settings.setCookieStore(Network.dumpCookieStore()); Settings.setCookieStore(Cookies.dumpCookieStore());


return StatusCode.NO_ERROR; // logged in return StatusCode.NO_ERROR; // logged in
} else { } else {
Expand All @@ -137,7 +137,7 @@ public static StatusCode logout() {
return StatusCode.MAINTENANCE; return StatusCode.MAINTENANCE;
} }


Network.clearCookies(); Cookies.clearCookies();
Settings.setCookieStore(null); Settings.setCookieStore(null);
return StatusCode.NO_ERROR; return StatusCode.NO_ERROR;
} }
Expand Down
42 changes: 1 addition & 41 deletions main/src/cgeo/geocaching/network/Network.java
Expand Up @@ -15,17 +15,13 @@
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseInterceptor; import org.apache.http.HttpResponseInterceptor;
import org.apache.http.NameValuePair; import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.cookie.Cookie;
import org.apache.http.entity.HttpEntityWrapper; import org.apache.http.entity.HttpEntityWrapper;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.params.BasicHttpParams; import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.CoreConnectionPNames; import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.CoreProtocolPNames;
Expand Down Expand Up @@ -72,8 +68,6 @@ public long getContentLength() {
private static final String PATTERN_PASSWORD = "(?<=[\\?&])[Pp]ass(w(or)?d)?=[^&#$]+"; private static final String PATTERN_PASSWORD = "(?<=[\\?&])[Pp]ass(w(or)?d)?=[^&#$]+";


private final static HttpParams clientParams = new BasicHttpParams(); private final static HttpParams clientParams = new BasicHttpParams();
private static boolean cookieStoreRestored = false;
private final static CookieStore cookieStore = new BasicCookieStore();


static { static {
Network.clientParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.UTF_8); Network.clientParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.UTF_8);
Expand All @@ -87,7 +81,7 @@ private static String hidePassword(final String message) {


private static HttpClient getHttpClient() { private static HttpClient getHttpClient() {
final DefaultHttpClient client = new DefaultHttpClient(); final DefaultHttpClient client = new DefaultHttpClient();
client.setCookieStore(cookieStore); client.setCookieStore(Cookies.cookieStore);
client.setParams(clientParams); client.setParams(clientParams);


client.addRequestInterceptor(new HttpRequestInterceptor() { client.addRequestInterceptor(new HttpRequestInterceptor() {
Expand Down Expand Up @@ -128,40 +122,6 @@ public void process(
return client; return client;
} }


public static void restoreCookieStore(final String oldCookies) {
if (!cookieStoreRestored) {
Network.clearCookies();
if (oldCookies != null) {
for (final String cookie : StringUtils.split(oldCookies, ';')) {
final String[] split = StringUtils.split(cookie, "=", 3);
if (split.length == 3) {
final BasicClientCookie newCookie = new BasicClientCookie(split[0], split[1]);
newCookie.setDomain(split[2]);
cookieStore.addCookie(newCookie);
}
}
}
cookieStoreRestored = true;
}
}

public static String dumpCookieStore() {
StringBuilder cookies = new StringBuilder();
for (final Cookie cookie : cookieStore.getCookies()) {
cookies.append(cookie.getName());
cookies.append('=');
cookies.append(cookie.getValue());
cookies.append('=');
cookies.append(cookie.getDomain());
cookies.append(';');
}
return cookies.toString();
}

public static void clearCookies() {
cookieStore.clear();
}

/** /**
* POST HTTP request * POST HTTP request
* *
Expand Down

0 comments on commit 8074ce7

Please sign in to comment.