aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/cgBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/cgBase.java')
-rw-r--r--main/src/cgeo/geocaching/cgBase.java88
1 files changed, 75 insertions, 13 deletions
diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java
index 008af8d..6af7ea4 100644
--- a/main/src/cgeo/geocaching/cgBase.java
+++ b/main/src/cgeo/geocaching/cgBase.java
@@ -141,6 +141,13 @@ public class cgBase {
public static final int UPDATE_LOAD_PROGRESS_DETAIL = 42186;
+ // false = not logged in
+ private static boolean actualLoginStatus = false;
+ private static String actualUserName = "";
+ private static String actualMemberStatus = "";
+ private static int actualCachesFound = -1;
+ private static String actualStatus = "";
+
private cgBase() {
//initialize(app);
throw new UnsupportedOperationException(); // static class, not to be instantiated
@@ -150,6 +157,7 @@ public class cgBase {
context = app.getBaseContext();
res = app.getBaseContext().getResources();
+ cgBase.actualStatus = res.getString(R.string.init_login_popup_working);
try {
final PackageManager manager = app.getPackageManager();
@@ -304,7 +312,7 @@ public class cgBase {
return StatusCode.CONNECTION_FAILED; // no loginpage
}
- if (checkLogin(loginData)) {
+ if (getLoginStatus(loginData)) {
Log.i(Settings.tag, "Already logged in Geocaching.com as " + login.left);
switchToEnglish(loginData);
return StatusCode.NO_ERROR; // logged in
@@ -331,7 +339,7 @@ public class cgBase {
loginData = getResponseData(loginResponse);
if (StringUtils.isNotBlank(loginData)) {
- if (checkLogin(loginData)) {
+ if (getLoginStatus(loginData)) {
Log.i(Settings.tag, "Successfully logged in Geocaching.com as " + login.left);
switchToEnglish(loginData);
@@ -372,22 +380,34 @@ public class cgBase {
* @param page
* @return true = User has been logged in, false else
*/
- private static boolean checkLogin(String page) {
+ private static boolean getLoginStatus(String page) {
if (StringUtils.isBlank(page)) {
Log.e(Settings.tag, "cgeoBase.checkLogin: No page given");
return false;
}
- // on every page
- if (BaseUtils.matches(page, GCConstants.PATTERN_LOGGEDIN2)) {
+ cgBase.actualStatus = res.getString(R.string.init_login_popup_ok);
+
+ // on every page except login page
+ cgBase.actualLoginStatus = BaseUtils.matches(page, GCConstants.PATTERN_LOGIN_NAME);
+ if (cgBase.actualLoginStatus) {
+ cgBase.actualUserName = BaseUtils.getMatch(page, GCConstants.PATTERN_LOGIN_NAME, true, "???");
+ cgBase.actualMemberStatus = BaseUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, "???");
+ cgBase.actualCachesFound = Integer.parseInt(BaseUtils.getMatch(page, GCConstants.PATTERN_CACHES_FOUND, true, "0"));
return true;
}
- // after login
- if (BaseUtils.matches(page, GCConstants.PATTERN_LOGGEDIN)) {
+ // login page
+ cgBase.actualLoginStatus = BaseUtils.matches(page, GCConstants.PATTERN_LOGIN_NAME_LOGIN_PAGE);
+ if (cgBase.actualLoginStatus) {
+ cgBase.actualUserName = Settings.getUsername();
+ cgBase.actualMemberStatus = Settings.getMemberStatus();
+ // number of caches found is not part of this page
return true;
}
+ cgBase.actualStatus = res.getString(R.string.err_login_failed);
+
return false;
}
@@ -1414,7 +1434,9 @@ public class cgBase {
Settings.setMemberStatus(BaseUtils.getMatch(profile, GCConstants.PATTERN_MEMBER_STATUS, true, null));
- final String avatarURL = BaseUtils.getMatch(profile, GCConstants.PATTERN_AVATAR_IMAGE, false, null);
+ cgBase.actualCachesFound = Integer.parseInt(BaseUtils.getMatch(profile, GCConstants.PATTERN_CACHES_FOUND, true, "-1"));
+
+ final String avatarURL = BaseUtils.getMatch(profile, GCConstants.PATTERN_AVATAR_IMAGE_PROFILE_PAGE, false, null);
if (null != avatarURL) {
final HtmlImage imgGetter = new HtmlImage(context, "", false, 0, false);
return imgGetter.getDrawable(avatarURL);
@@ -1763,7 +1785,7 @@ public class cgBase {
putViewstates(params, viewstates);
String page = getResponseData(postRequest(uri, params));
- if (!checkLogin(page)) {
+ if (!getLoginStatus(page)) {
final StatusCode loginState = login();
if (loginState == StatusCode.NO_ERROR) {
page = getResponseData(postRequest(uri, params));
@@ -1860,6 +1882,8 @@ public class cgBase {
final ParseResult search = ParseResult.filterParseResults(parseResult, Settings.isExcludeDisabledCaches(), false, cacheType);
cgeoapplication.getInstance().addSearch(search.cacheList, listId);
+ getLoginStatus(page);
+
return search;
}
@@ -2052,7 +2076,7 @@ public class cgBase {
final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/seek/log.aspx").encodedQuery("ID=" + cacheid).build().toString();
String page = getResponseData(postRequest(uri, params));
- if (!checkLogin(page)) {
+ if (!getLoginStatus(page)) {
final StatusCode loginState = login();
if (loginState == StatusCode.NO_ERROR) {
page = getResponseData(postRequest(uri, params));
@@ -2128,6 +2152,7 @@ public class cgBase {
app.saveVisitDate(geocode);
}
+ getLoginStatus(page);
return StatusCode.NO_ERROR;
}
} catch (Exception e) {
@@ -2177,7 +2202,7 @@ public class cgBase {
final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/track/log.aspx").encodedQuery("wid=" + tbid).build().toString();
String page = getResponseData(postRequest(uri, params));
- if (!checkLogin(page)) {
+ if (!getLoginStatus(page)) {
final StatusCode loginState = login();
if (loginState == StatusCode.NO_ERROR) {
page = getResponseData(postRequest(uri, params));
@@ -2393,7 +2418,7 @@ public class cgBase {
HttpResponse response = postRequest(uri, null);
String data = getResponseData(response);
- if (!checkLogin(data)) {
+ if (!getLoginStatus(data)) {
if (login() == StatusCode.NO_ERROR) {
response = postRequest(uri, null);
data = getResponseData(response);
@@ -2418,7 +2443,7 @@ public class cgBase {
HttpResponse response = request(uri, params, xContentType, my, addF);
String data = getResponseData(response);
- if (!checkLogin(data)) {
+ if (!getLoginStatus(data)) {
if (login() == StatusCode.NO_ERROR) {
response = request(uri, params, xContentType, my, addF);
data = getResponseData(response);
@@ -3083,4 +3108,41 @@ public class cgBase {
return null;
}
+ public static boolean isActualLoginStatus() {
+ return actualLoginStatus;
+ }
+
+ public static void setActualLoginStatus(boolean actualLoginStatus) {
+ cgBase.actualLoginStatus = actualLoginStatus;
+ }
+
+ public static String getActualUserName() {
+ return actualUserName;
+ }
+
+ public static void setActualUserName(String actualUserName) {
+ cgBase.actualUserName = actualUserName;
+ }
+
+ public static String getActualMemberStatus() {
+ return actualMemberStatus;
+ }
+
+ public static void setActualMemberStatus(String actualMemberStatus) {
+ cgBase.actualMemberStatus = actualMemberStatus;
+ }
+
+ public static int getActualCachesFound() {
+ return actualCachesFound;
+ }
+
+ public static void setActualCachesFound(int actualCachesFound) {
+ cgBase.actualCachesFound = actualCachesFound;
+ }
+
+ public static String getActualStatus() {
+ return actualStatus;
+ }
+
}
+