diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2011-11-08 21:03:27 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2011-11-08 21:04:49 +0100 |
| commit | e09a82a8e34d096b6dc7ce7d0f921d6ea8959116 (patch) | |
| tree | e2639637923b20cdc6c1c2ae1c2ca2db903e7750 /main/src | |
| parent | 145858fe97b7e7cf713789ff5c7d96a2c811fd4a (diff) | |
| download | cgeo-e09a82a8e34d096b6dc7ce7d0f921d6ea8959116.zip cgeo-e09a82a8e34d096b6dc7ce7d0f921d6ea8959116.tar.gz cgeo-e09a82a8e34d096b6dc7ce7d0f921d6ea8959116.tar.bz2 | |
Display a better message when gc.com is in maintenance mode
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/cgBase.java | 18 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeo.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/enumerations/StatusCode.java | 1 |
3 files changed, 15 insertions, 6 deletions
diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java index d569cb1..e40493b 100644 --- a/main/src/cgeo/geocaching/cgBase.java +++ b/main/src/cgeo/geocaching/cgBase.java @@ -133,6 +133,7 @@ public class cgBase { private static final Pattern patternViewstateFieldCount = Pattern.compile("id=\"__VIEWSTATEFIELDCOUNT\"[^(value)]+value=\"(\\d+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static final Pattern patternViewstates = Pattern.compile("id=\"__VIEWSTATE(\\d*)\"[^(value)]+value=\"([^\"]+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static final Pattern patternUserToken = Pattern.compile("userToken\\s*=\\s*'([^']+)'"); + private static final Pattern patternMaintenance = Pattern.compile("Geocaching.com is temporarily down for maintenance"); public static final float miles2km = 1.609344f; public static final float feet2km = 0.0003048f; public static final float yards2km = 0.0009144f; @@ -446,7 +447,10 @@ public class cgBase { } HttpResponse loginResponse = request("https://www.geocaching.com/login/default.aspx", null, false, false, false); - String loginData = getResponseData(loginResponse); + String loginData = getResponseDataOnError(loginResponse); + if (loginResponse.getStatusLine().getStatusCode() == 503 && patternMaintenance.matcher(loginData).find()) { + return StatusCode.MAINTENANCE; + } if (StringUtils.isBlank(loginData)) { Log.e(Settings.tag, "cgeoBase.login: Failed to retrieve login page (1st)"); @@ -2734,10 +2738,7 @@ public class cgBase { return getViewstates(getResponseData(response)); } - static public String getResponseData(final HttpResponse response) { - if (!isSuccess(response)) { - return null; - } + static public String getResponseDataOnError(final HttpResponse response) { try { return BaseUtils.replaceWhitespace(EntityUtils.toString(response.getEntity(), HTTP.UTF_8)); } catch (Exception e) { @@ -2746,6 +2747,13 @@ public class cgBase { } } + static public String getResponseData(final HttpResponse response) { + if (!isSuccess(response)) { + return null; + } + return getResponseDataOnError(response); + } + public static String postRequestLogged(final String uri) { final String data = getResponseData(postRequest(uri, null)); if (!checkLogin(data)) { diff --git a/main/src/cgeo/geocaching/cgeo.java b/main/src/cgeo/geocaching/cgeo.java index afa789a..02c8571 100644 --- a/main/src/cgeo/geocaching/cgeo.java +++ b/main/src/cgeo/geocaching/cgeo.java @@ -136,7 +136,7 @@ public class cgeo extends AbstractActivity { final StatusCode reason = (StatusCode) msg.obj; if (reason != null && reason != StatusCode.NO_ERROR) { //LoginFailed - showToast(res.getString(R.string.err_login_failed_toast)); + showToast(res.getString(reason == StatusCode.MAINTENANCE ? reason.getErrorString() : R.string.err_login_failed_toast)); } } catch (Exception e) { Log.w(Settings.tag, "cgeo.fisrtLoginHander: " + e.toString()); diff --git a/main/src/cgeo/geocaching/enumerations/StatusCode.java b/main/src/cgeo/geocaching/enumerations/StatusCode.java index 239d9bc..8c29ff6 100644 --- a/main/src/cgeo/geocaching/enumerations/StatusCode.java +++ b/main/src/cgeo/geocaching/enumerations/StatusCode.java @@ -19,6 +19,7 @@ public enum StatusCode { UNAPPROVED_LICENSE(-7, R.string.err_license), UNPUBLISHED_CACHE(-8, R.string.err_unpublished), PREMIUM_ONLY(-9, R.string.err_premium_only), + MAINTENANCE(-10, R.string.err_maintenance), LOG_POST_ERROR(1000, R.string.err_log_post_failed), NO_LOG_TEXT(1001, R.string.warn_log_text_fill), NO_DATA_FROM_SERVER(1002, R.string.err_log_failed_server); |
