aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractLogin.java77
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECApi.java4
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECLogin.java74
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCLogin.java97
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java34
-rw-r--r--main/src/cgeo/geocaching/export/FieldnoteExport.java6
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java2
-rw-r--r--main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java2
-rw-r--r--main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java4
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java4
-rw-r--r--tests/src/cgeo/geocaching/cgeoApplicationTest.java8
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java2
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java8
15 files changed, 169 insertions, 173 deletions
diff --git a/main/src/cgeo/geocaching/connector/AbstractLogin.java b/main/src/cgeo/geocaching/connector/AbstractLogin.java
new file mode 100644
index 0000000..6527685
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/AbstractLogin.java
@@ -0,0 +1,77 @@
+package cgeo.geocaching.connector;
+
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.R;
+import cgeo.geocaching.enumerations.StatusCode;
+import cgeo.geocaching.network.Cookies;
+import cgeo.geocaching.settings.Settings;
+
+import org.apache.commons.lang3.StringUtils;
+
+public abstract class AbstractLogin {
+
+ /**
+ * {@code true} if logged in, {@code false} otherwise
+ */
+ private boolean actualLoginStatus = false;
+ private String actualUserName = StringUtils.EMPTY;
+ /**
+ * Number of caches found. An unknown number is signaled by the value -1, while 0 really indicates zero caches found
+ * by the user.
+ */
+ private int actualCachesFound = -1;
+ private String actualStatus = StringUtils.EMPTY;
+
+ public void setActualCachesFound(final int found) {
+ actualCachesFound = found;
+ }
+
+ public String getActualStatus() {
+ return actualStatus;
+ }
+
+ protected void setActualStatus(final String status) {
+ actualStatus = status;
+ }
+
+ public boolean isActualLoginStatus() {
+ return actualLoginStatus;
+ }
+
+ protected void setActualLoginStatus(boolean loginStatus) {
+ actualLoginStatus = loginStatus;
+ }
+
+ public String getActualUserName() {
+ return actualUserName;
+ }
+
+ protected void setActualUserName(String userName) {
+ actualUserName = userName;
+ }
+
+ public int getActualCachesFound() {
+ return actualCachesFound;
+ }
+
+ protected void resetLoginStatus() {
+ Cookies.clearCookies();
+ Settings.setCookieStore(null);
+
+ setActualLoginStatus(false);
+ }
+
+ protected void clearLoginInfo() {
+ resetLoginStatus();
+
+ setActualCachesFound(-1);
+ setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login));
+ }
+
+ public StatusCode login() {
+ return login(true);
+ }
+
+ protected abstract StatusCode login(boolean retry);
+
+}
diff --git a/main/src/cgeo/geocaching/connector/ec/ECApi.java b/main/src/cgeo/geocaching/connector/ec/ECApi.java
index d458e88..f91bcdb 100644
--- a/main/src/cgeo/geocaching/connector/ec/ECApi.java
+++ b/main/src/cgeo/geocaching/connector/ec/ECApi.java
@@ -99,7 +99,7 @@ public class ECApi {
return new LogResult(StatusCode.LOG_POST_ERROR_EC, "");
}
if (!isRetry && response.getStatusLine().getStatusCode() == 403) {
- if (ECLogin.login() == StatusCode.NO_ERROR) {
+ if (ECLogin.getInstance().login() == StatusCode.NO_ERROR) {
apiRequest(uri, params, true);
}
}
@@ -132,7 +132,7 @@ public class ECApi {
return null;
}
if (!isRetry && response.getStatusLine().getStatusCode() == 403) {
- if (ECLogin.login() == StatusCode.NO_ERROR) {
+ if (ECLogin.getInstance().login() == StatusCode.NO_ERROR) {
apiRequest(uri, params, true);
}
}
diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
index eb2f164..ee538a3 100644
--- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java
+++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
@@ -124,7 +124,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
@Override
public boolean login(Handler handler, Context fromActivity) {
// login
- final StatusCode status = ECLogin.login();
+ final StatusCode status = ECLogin.getInstance().login();
if (status == StatusCode.NO_ERROR) {
CgeoApplication.getInstance().checkLogin = false;
@@ -144,22 +144,22 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
@Override
public String getUserName() {
- return ECLogin.getActualUserName();
+ return ECLogin.getInstance().getActualUserName();
}
@Override
public int getCachesFound() {
- return ECLogin.getActualCachesFound();
+ return ECLogin.getInstance().getActualCachesFound();
}
@Override
public String getLoginStatusString() {
- return ECLogin.getActualStatus();
+ return ECLogin.getInstance().getActualStatus();
}
@Override
public boolean isLoggedIn() {
- return ECLogin.isActualLoginStatus();
+ return ECLogin.getInstance().isActualLoginStatus();
}
@Override
diff --git a/main/src/cgeo/geocaching/connector/ec/ECLogin.java b/main/src/cgeo/geocaching/connector/ec/ECLogin.java
index 2fda8c3..dc19f98 100644
--- a/main/src/cgeo/geocaching/connector/ec/ECLogin.java
+++ b/main/src/cgeo/geocaching/connector/ec/ECLogin.java
@@ -2,6 +2,7 @@ package cgeo.geocaching.connector.ec;
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
+import cgeo.geocaching.connector.AbstractLogin;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.network.Network;
@@ -18,20 +19,22 @@ import org.eclipse.jdt.annotation.Nullable;
import java.util.regex.Matcher;
-public abstract class ECLogin {
+public class ECLogin extends AbstractLogin {
- // false = not logged in
- private static boolean actualLoginStatus = false;
- private static String actualUserName = StringUtils.EMPTY;
- private static int actualCachesFound = -1;
- private static String actualStatus = StringUtils.EMPTY;
+ private ECLogin() {
+ // singleton
+ }
+ private static class SingletonHolder {
+ private static ECLogin INSTANCE = new ECLogin();
+ }
- public static StatusCode login() {
- return login(true);
+ public static ECLogin getInstance() {
+ return SingletonHolder.INSTANCE;
}
- private static StatusCode login(boolean retry) {
+ @Override
+ protected StatusCode login(boolean retry) {
final ImmutablePair<String, String> login = Settings.getECLogin();
if (StringUtils.isEmpty(login.left) || StringUtils.isEmpty(login.right)) {
@@ -40,7 +43,7 @@ public abstract class ECLogin {
return StatusCode.NO_LOGIN_INFO_STORED;
}
- ECLogin.setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working));
+ setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working));
HttpResponse loginResponse = Network.getRequest("https://extremcaching.com/community/profil1");
String loginData = Network.getResponseData(loginResponse);
@@ -49,7 +52,7 @@ public abstract class ECLogin {
return StatusCode.CONNECTION_FAILED_EC; // no login page
}
- if (ECLogin.getLoginStatus(loginData)) {
+ if (getLoginStatus(loginData)) {
Log.i("Already logged in Extremcaching.com as " + login.left);
return StatusCode.NO_ERROR; // logged in
}
@@ -77,7 +80,7 @@ public abstract class ECLogin {
}
assert loginData != null; // Caught above
- if (ECLogin.getLoginStatus(loginData)) {
+ if (getLoginStatus(loginData)) {
Log.i("Successfully logged in Extremcaching.com as " + login.left);
Settings.setCookieStore(Cookies.dumpCookieStore());
@@ -98,51 +101,6 @@ public abstract class ECLogin {
return StatusCode.UNKNOWN_ERROR; // can't login
}
- private static void resetLoginStatus() {
- Cookies.clearCookies();
- Settings.setCookieStore(null);
-
- setActualLoginStatus(false);
- }
-
- private static void clearLoginInfo() {
- resetLoginStatus();
-
- setActualCachesFound(-1);
- setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login));
- }
-
- static void setActualCachesFound(final int found) {
- actualCachesFound = found;
- }
-
- public static String getActualStatus() {
- return actualStatus;
- }
-
- private static void setActualStatus(final String status) {
- actualStatus = status;
- }
-
- public static boolean isActualLoginStatus() {
- return actualLoginStatus;
- }
-
- private static void setActualLoginStatus(boolean loginStatus) {
- actualLoginStatus = loginStatus;
- }
-
- public static String getActualUserName() {
- return actualUserName;
- }
-
- private static void setActualUserName(String userName) {
- actualUserName = userName;
- }
-
- public static int getActualCachesFound() {
- return actualCachesFound;
- }
/**
* Check if the user has been logged in when he retrieved the data.
@@ -150,7 +108,7 @@ public abstract class ECLogin {
* @param page
* @return <code>true</code> if user is logged in, <code>false</code> otherwise
*/
- public static boolean getLoginStatus(@Nullable final String page) {
+ public boolean getLoginStatus(@Nullable final String page) {
if (StringUtils.isBlank(page)) {
Log.e("ECLogin.getLoginStatus: No page given");
return false;
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 58094ed..3faebad 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -297,7 +297,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
@Override
public boolean login(Handler handler, Context fromActivity) {
// login
- final StatusCode status = GCLogin.login();
+ final StatusCode status = GCLogin.getInstance().login();
if (status == StatusCode.NO_ERROR) {
CgeoApplication.getInstance().checkLogin = false;
@@ -318,22 +318,22 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
@Override
public String getUserName() {
- return GCLogin.getActualUserName();
+ return GCLogin.getInstance().getActualUserName();
}
@Override
public int getCachesFound() {
- return GCLogin.getActualCachesFound();
+ return GCLogin.getInstance().getActualCachesFound();
}
@Override
public String getLoginStatusString() {
- return GCLogin.getActualStatus();
+ return GCLogin.getInstance().getActualStatus();
}
@Override
public boolean isLoggedIn() {
- return GCLogin.isActualLoginStatus();
+ return GCLogin.getInstance().isActualLoginStatus();
}
@Override
diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
index 53be668..3b143a3 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java
@@ -2,6 +2,7 @@ package cgeo.geocaching.connector.gc;
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
+import cgeo.geocaching.connector.AbstractLogin;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.network.HtmlImage;
@@ -13,6 +14,7 @@ import cgeo.geocaching.utils.MatcherWrapper;
import cgeo.geocaching.utils.TextUtils;
import ch.boye.httpclientandroidlib.HttpResponse;
+
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -29,18 +31,12 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-public abstract class GCLogin {
+public class GCLogin extends AbstractLogin {
private static final String DEFAULT_CUSTOM_DATE_FORMAT = "MM/dd/yyyy";
private final static String ENGLISH = "<a href=\"#\">English&#9660;</a>";
- // false = not logged in
- private static boolean actualLoginStatus = false;
- private static String actualUserName = StringUtils.EMPTY;
- private static int actualCachesFound = -1;
- private static String actualStatus = StringUtils.EMPTY;
-
private final static Map<String, SimpleDateFormat> GC_CUSTOM_DATE_FORMATS;
public static final String LANGUAGE_CHANGE_URI = "http://www.geocaching.com/my/souvenirs.aspx";
@@ -64,11 +60,20 @@ public abstract class GCLogin {
GC_CUSTOM_DATE_FORMATS = Collections.unmodifiableMap(map);
}
- public static StatusCode login() {
- return login(true);
+ private GCLogin() {
+ // singleton
+ }
+
+ public static GCLogin getInstance() {
+ return SingletonHolder.INSTANCE;
}
- private static StatusCode login(boolean retry) {
+ private static class SingletonHolder {
+ private static final GCLogin INSTANCE = new GCLogin();
+ }
+
+ @Override
+ protected StatusCode login(boolean retry) {
final ImmutablePair<String, String> login = Settings.getGcLogin();
if (StringUtils.isEmpty(login.left) || StringUtils.isEmpty(login.right)) {
@@ -77,7 +82,7 @@ public abstract class GCLogin {
return StatusCode.NO_LOGIN_INFO_STORED;
}
- GCLogin.setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working));
+ setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working));
HttpResponse loginResponse = Network.getRequest("https://www.geocaching.com/login/default.aspx");
String loginData = Network.getResponseData(loginResponse);
if (loginResponse != null && loginResponse.getStatusLine().getStatusCode() == 503 && TextUtils.matches(loginData, GCConstants.PATTERN_MAINTENANCE)) {
@@ -86,12 +91,12 @@ public abstract class GCLogin {
if (StringUtils.isBlank(loginData)) {
Log.e("Login.login: Failed to retrieve login page (1st)");
- return StatusCode.CONNECTION_FAILED; // no loginpage
+ return StatusCode.CONNECTION_FAILED; // no login page
}
- if (GCLogin.getLoginStatus(loginData)) {
+ if (getLoginStatus(loginData)) {
Log.i("Already logged in Geocaching.com as " + login.left + " (" + Settings.getMemberStatus() + ')');
- GCLogin.switchToEnglish(loginData);
+ switchToEnglish(loginData);
return StatusCode.NO_ERROR; // logged in
}
@@ -122,10 +127,10 @@ public abstract class GCLogin {
}
assert loginData != null; // Caught above
- if (GCLogin.getLoginStatus(loginData)) {
+ if (getLoginStatus(loginData)) {
Log.i("Successfully logged in Geocaching.com as " + login.left + " (" + Settings.getMemberStatus() + ')');
- GCLogin.switchToEnglish(loginData);
+ switchToEnglish(loginData);
Settings.setCookieStore(Cookies.dumpCookieStore());
return StatusCode.NO_ERROR; // logged in
@@ -143,14 +148,14 @@ public abstract class GCLogin {
Log.i("Failed to log in Geocaching.com as " + login.left + " for some unknown reason");
if (retry) {
- GCLogin.switchToEnglish(loginData);
+ switchToEnglish(loginData);
return login(false);
}
return StatusCode.UNKNOWN_ERROR; // can't login
}
- public static StatusCode logout() {
+ public StatusCode logout() {
final HttpResponse logoutResponse = Network.getRequest("https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fdefault.aspx%3f");
final String logoutData = Network.getResponseData(logoutResponse);
if (logoutResponse != null && logoutResponse.getStatusLine().getStatusCode() == 503 && TextUtils.matches(logoutData, GCConstants.PATTERN_MAINTENANCE)) {
@@ -162,51 +167,6 @@ public abstract class GCLogin {
return StatusCode.NO_ERROR;
}
- private static void resetLoginStatus() {
- Cookies.clearCookies();
- Settings.setCookieStore(null);
-
- setActualLoginStatus(false);
- }
-
- private static void clearLoginInfo() {
- resetLoginStatus();
-
- setActualCachesFound(-1);
- setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login));
- }
-
- static void setActualCachesFound(final int found) {
- actualCachesFound = found;
- }
-
- public static String getActualStatus() {
- return actualStatus;
- }
-
- private static void setActualStatus(final String status) {
- actualStatus = status;
- }
-
- public static boolean isActualLoginStatus() {
- return actualLoginStatus;
- }
-
- private static void setActualLoginStatus(boolean loginStatus) {
- actualLoginStatus = loginStatus;
- }
-
- public static String getActualUserName() {
- return actualUserName;
- }
-
- private static void setActualUserName(String userName) {
- actualUserName = userName;
- }
-
- public static int getActualCachesFound() {
- return actualCachesFound;
- }
/**
* Check if the user has been logged in when he retrieved the data.
@@ -214,7 +174,7 @@ public abstract class GCLogin {
* @param page
* @return <code>true</code> if user is logged in, <code>false</code> otherwise
*/
- public static boolean getLoginStatus(@Nullable final String page) {
+ public boolean getLoginStatus(@Nullable final String page) {
if (StringUtils.isBlank(page)) {
Log.e("Login.checkLogin: No page given");
return false;
@@ -253,7 +213,7 @@ public abstract class GCLogin {
return false;
}
- private static void switchToEnglish(String previousPage) {
+ private void switchToEnglish(String previousPage) {
if (previousPage != null && previousPage.contains(ENGLISH)) {
Log.i("Geocaching.com language already set to English");
// get find count
@@ -277,7 +237,7 @@ public abstract class GCLogin {
}
}
- public static BitmapDrawable downloadAvatarAndGetMemberStatus() {
+ public BitmapDrawable downloadAvatarAndGetMemberStatus() {
try {
final String responseData = StringUtils.defaultString(Network.getResponseData(Network.getRequest("http://www.geocaching.com/my/")));
final String profile = TextUtils.replaceWhitespace(responseData);
@@ -455,7 +415,7 @@ public abstract class GCLogin {
* @param uri
* @return
*/
- public static String postRequestLogged(final String uri, final Parameters params) {
+ public String postRequestLogged(final String uri, final Parameters params) {
final String data = Network.getResponseData(Network.postRequest(uri, params));
if (getLoginStatus(data)) {
@@ -478,7 +438,7 @@ public abstract class GCLogin {
* @return
*/
@Nullable
- public static String getRequestLogged(@NonNull final String uri, @Nullable final Parameters params) {
+ public String getRequestLogged(@NonNull final String uri, @Nullable final Parameters params) {
final HttpResponse response = Network.getRequest(uri, params);
final String data = Network.getResponseData(response, canRemoveWhitespace(uri));
@@ -514,4 +474,5 @@ public abstract class GCLogin {
final String sessionToken = TextUtils.getMatch(data, GCConstants.PATTERN_SESSIONTOKEN, "");
return new String[] { userSession, sessionToken };
}
+
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index f982582..ce1a74b 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -785,8 +785,8 @@ public abstract class GCParser {
"__EVENTARGUMENT", "");
GCLogin.putViewstates(params, viewstates);
- final String page = GCLogin.postRequestLogged(uri, params);
- if (!GCLogin.getLoginStatus(page)) {
+ final String page = GCLogin.getInstance().postRequestLogged(uri, params);
+ if (!GCLogin.getInstance().getLoginStatus(page)) {
Log.e("GCParser.postLogTrackable: Can not log in geocaching");
return search;
}
@@ -850,7 +850,7 @@ public abstract class GCParser {
final String uri = "http://www.geocaching.com/seek/nearest.aspx";
final String fullUri = uri + "?" + addFToParams(params, my, true);
- final String page = GCLogin.getRequestLogged(uri, addFToParams(params, my, true));
+ final String page = GCLogin.getInstance().getRequestLogged(uri, addFToParams(params, my, true));
if (StringUtils.isBlank(page)) {
Log.e("GCParser.searchByAny: No data from server");
@@ -866,7 +866,7 @@ public abstract class GCParser {
final SearchResult search = searchResult.filterSearchResults(Settings.isExcludeDisabledCaches(), false, cacheType);
- GCLogin.getLoginStatus(page);
+ GCLogin.getInstance().getLoginStatus(page);
return search;
}
@@ -973,7 +973,7 @@ public abstract class GCParser {
params.put("id", id);
}
- final String page = GCLogin.getRequestLogged("http://www.geocaching.com/track/details.aspx", params);
+ final String page = GCLogin.getInstance().getRequestLogged("http://www.geocaching.com/track/details.aspx", params);
if (StringUtils.isBlank(page)) {
Log.e("GCParser.searchTrackable: No data from server");
@@ -994,7 +994,7 @@ public abstract class GCParser {
final Parameters params = new Parameters();
- final String page = GCLogin.getRequestLogged("http://www.geocaching.com/pocket/default.aspx", params);
+ final String page = GCLogin.getInstance().getRequestLogged("http://www.geocaching.com/pocket/default.aspx", params);
if (StringUtils.isBlank(page)) {
Log.e("GCParser.searchPocketQueryList: No data from server");
@@ -1091,8 +1091,8 @@ public abstract class GCParser {
}
final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/seek/log.aspx").encodedQuery("ID=" + cacheid).build().toString();
- String page = GCLogin.postRequestLogged(uri, params);
- if (!GCLogin.getLoginStatus(page)) {
+ String page = GCLogin.getInstance().postRequestLogged(uri, params);
+ if (!GCLogin.getInstance().getLoginStatus(page)) {
Log.e("GCParser.postLog: Cannot log in geocaching");
return new ImmutablePair<StatusCode, String>(StatusCode.NOT_LOGGED_IN, "");
}
@@ -1156,10 +1156,10 @@ public abstract class GCParser {
DataStore.saveVisitDate(geocode);
}
- GCLogin.getLoginStatus(page);
+ GCLogin.getInstance().getLoginStatus(page);
// the log-successful-page contains still the old value
- if (GCLogin.getActualCachesFound() >= 0) {
- GCLogin.setActualCachesFound(GCLogin.getActualCachesFound() + 1);
+ if (GCLogin.getInstance().getActualCachesFound() >= 0) {
+ GCLogin.getInstance().setActualCachesFound(GCLogin.getInstance().getActualCachesFound() + 1);
}
final String logID = TextUtils.getMatch(page, GCConstants.PATTERN_LOG_IMAGE_UPLOAD, "");
@@ -1190,7 +1190,7 @@ public abstract class GCParser {
public static ImmutablePair<StatusCode, String> uploadLogImage(final String logId, final String caption, final String description, final Uri imageUri) {
final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/seek/upload.aspx").encodedQuery("LID=" + logId).build().toString();
- final String page = GCLogin.getRequestLogged(uri, null);
+ final String page = GCLogin.getInstance().getRequestLogged(uri, null);
if (StringUtils.isBlank(page)) {
Log.e("GCParser.uploadLogImage: No data from server");
return new ImmutablePair<StatusCode, String>(StatusCode.UNKNOWN_ERROR, null);
@@ -1272,8 +1272,8 @@ public abstract class GCParser {
"ctl00$ContentBody$uxVistOtherListingGC", "");
final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/track/log.aspx").encodedQuery("wid=" + tbid).build().toString();
- final String page = GCLogin.postRequestLogged(uri, params);
- if (!GCLogin.getLoginStatus(page)) {
+ final String page = GCLogin.getInstance().postRequestLogged(uri, params);
+ if (!GCLogin.getInstance().getLoginStatus(page)) {
Log.e("GCParser.postLogTrackable: Cannot log in geocaching");
return StatusCode.NOT_LOGGED_IN;
}
@@ -1302,7 +1302,7 @@ public abstract class GCParser {
*/
static boolean addToWatchlist(final Geocache cache) {
final String uri = "http://www.geocaching.com/my/watchlist.aspx?w=" + cache.getCacheId();
- final String page = GCLogin.postRequestLogged(uri, null);
+ final String page = GCLogin.getInstance().postRequestLogged(uri, null);
if (StringUtils.isBlank(page)) {
Log.e("GCParser.addToWatchlist: No data from server");
@@ -1328,7 +1328,7 @@ public abstract class GCParser {
*/
static boolean removeFromWatchlist(final Geocache cache) {
final String uri = "http://www.geocaching.com/my/watchlist.aspx?ds=1&action=rem&id=" + cache.getCacheId();
- String page = GCLogin.postRequestLogged(uri, null);
+ String page = GCLogin.getInstance().postRequestLogged(uri, null);
if (StringUtils.isBlank(page)) {
Log.e("GCParser.removeFromWatchlist: No data from server");
@@ -1364,7 +1364,7 @@ public abstract class GCParser {
params.put("log", log);
params.put("numlogs", numlogs);
- return GCLogin.getRequestLogged("http://www.geocaching.com/seek/cache_details.aspx", params);
+ return GCLogin.getInstance().getRequestLogged("http://www.geocaching.com/seek/cache_details.aspx", params);
}
/**
diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java
index f52a192..4da480a 100644
--- a/main/src/cgeo/geocaching/export/FieldnoteExport.java
+++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java
@@ -175,16 +175,16 @@ class FieldnoteExport extends AbstractExport {
if (upload) {
publishProgress(STATUS_UPLOAD);
- if (!GCLogin.isActualLoginStatus()) {
+ if (!GCLogin.getInstance().isActualLoginStatus()) {
// no need to upload (possibly large file) if we're not logged in
- final StatusCode loginState = GCLogin.login();
+ final StatusCode loginState = GCLogin.getInstance().login();
if (loginState != StatusCode.NO_ERROR) {
Log.e("FieldnoteExport.ExportTask upload: Login failed");
}
}
final String uri = "http://www.geocaching.com/my/uploadfieldnotes.aspx";
- final String page = GCLogin.getRequestLogged(uri, null);
+ final String page = GCLogin.getInstance().getRequestLogged(uri, null);
if (StringUtils.isBlank(page)) {
Log.e("FieldnoteExport.ExportTask get page: No data from server");
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index d331a73..657b897 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -1180,7 +1180,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
searchResult = ConnectorFactory.searchByViewport(viewport.resize(0.8), tokens);
downloaded = true;
if (searchResult.getError() == StatusCode.NOT_LOGGED_IN && Settings.isGCConnectorActive()) {
- GCLogin.login();
+ GCLogin.getInstance().login();
tokens = null;
} else {
break;
diff --git a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java
index f4f2fc7..a1497bb 100644
--- a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java
@@ -29,7 +29,7 @@ public class CheckECCredentialsPreference extends AbstractCheckCredentialsPrefer
@Override
protected Object login() {
- final StatusCode loginResult = ECLogin.login();
+ final StatusCode loginResult = ECLogin.getInstance().login();
Object payload = loginResult;
if (loginResult == StatusCode.NO_ERROR) {
payload = null;
diff --git a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
index 566ed7c..400f898 100644
--- a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
@@ -29,11 +29,11 @@ public class CheckGcCredentialsPreference extends AbstractCheckCredentialsPrefer
@Override
protected Object login() {
- final StatusCode loginResult = GCLogin.login();
+ final StatusCode loginResult = GCLogin.getInstance().login();
Object payload = loginResult;
if (loginResult == StatusCode.NO_ERROR) {
GCLogin.detectGcCustomDate();
- payload = GCLogin.downloadAvatarAndGetMemberStatus();
+ payload = GCLogin.getInstance().downloadAvatarAndGetMemberStatus();
}
return payload;
}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index f9c23b3..ca8b938 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -528,8 +528,8 @@ public class SettingsActivity extends PreferenceActivity {
}
if ((isPreference(preference, R.string.pref_username) && !stringValue.equals(Settings.getUsername())) || (isPreference(preference, R.string.pref_password) && !stringValue.equals(Settings.getGcLogin().getRight()))) {
// reset log-in if gc user or password is changed
- if (GCLogin.isActualLoginStatus()) {
- GCLogin.logout();
+ if (GCLogin.getInstance().isActualLoginStatus()) {
+ GCLogin.getInstance().logout();
}
CgeoApplication.getInstance().checkLogin = true;
}
diff --git a/tests/src/cgeo/geocaching/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
index 960ddb6..c4737db 100644
--- a/tests/src/cgeo/geocaching/cgeoApplicationTest.java
+++ b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
@@ -2,8 +2,8 @@ package cgeo.geocaching;
import cgeo.CGeoTestCase;
import cgeo.geocaching.connector.ConnectorFactory;
-import cgeo.geocaching.connector.gc.GCParser;
import cgeo.geocaching.connector.gc.GCLogin;
+import cgeo.geocaching.connector.gc.GCParser;
import cgeo.geocaching.connector.gc.Tile;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy;
@@ -51,7 +51,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
@SuppressWarnings("static-method")
@SmallTest
public void testPreconditions() {
- assertEquals(StatusCode.NO_ERROR, GCLogin.login());
+ assertEquals(StatusCode.NO_ERROR, GCLogin.getInstance().login());
}
/**
@@ -143,7 +143,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
// restore user and password
TestSettings.setLogin(login.left, login.right);
Settings.setMemberStatus(memberStatus);
- GCLogin.login();
+ GCLogin.getInstance().login();
}
}
@@ -417,7 +417,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
private static void deleteCacheFromDBAndLogout(String geocode) {
deleteCacheFromDB(geocode);
- GCLogin.logout();
+ GCLogin.getInstance().logout();
// Modify login data to avoid an automatic login again
TestSettings.setLogin("c:geo", "c:geo");
Settings.setMemberStatus("Basic member");
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java
index b688ed6..e86678d 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java
@@ -20,7 +20,7 @@ public class GCConnectorTest extends AbstractResourceInstrumentationTestCase {
// set up settings required for test
TestSettings.setExcludeMine(false);
Settings.setCacheType(CacheType.ALL);
- GCLogin.login();
+ GCLogin.getInstance().login();
final String[] tokens = GCLogin.getMapTokens();
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java
index 60b8011..60ff500 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java
@@ -45,10 +45,10 @@ public class GCConstantsTest extends AndroidTestCase {
*/
public static void testCacheCountOnline() {
- GCLogin.logout();
- GCLogin.setActualCachesFound(0);
- GCLogin.login();
- assertTrue(GCLogin.getActualCachesFound() > 0);
+ GCLogin.getInstance().logout();
+ GCLogin.getInstance().setActualCachesFound(0);
+ GCLogin.getInstance().login();
+ assertTrue(GCLogin.getInstance().getActualCachesFound() > 0);
}
public static void testConstants() {