diff options
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
| -rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java | 16 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OkapiClient.java | 15 |
2 files changed, 31 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java index c082bac..19f4447 100644 --- a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java +++ b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java @@ -2,9 +2,13 @@ package cgeo.geocaching.connector.oc; import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.R; +import cgeo.geocaching.connector.oc.OkapiError.OkapiErrors; import cgeo.geocaching.network.OAuthAuthorizationActivity; import cgeo.geocaching.settings.Settings; +import ch.boye.httpclientandroidlib.HttpResponse; + +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.eclipse.jdt.annotation.Nullable; @@ -52,4 +56,16 @@ public abstract class OCAuthorizationActivity extends OAuthAuthorizationActivity return res.getString(R.string.auth_dialog_completed_oc, getAuthTitle()); } + /** + * Return an extended error in case of an invalid time stamp + */ + @Override + protected String getExtendedErrorMsg(HttpResponse response) { + OkapiError error = OkapiClient.decodeErrorResponse(response); + if (error.getResult() == OkapiErrors.INVALID_TIMESTAMP) { + return res.getString(R.string.init_login_popup_invalid_timestamp); + } + return StringUtils.EMPTY; + } + } diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java index f4bac08..fbcda18 100644 --- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java +++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java @@ -822,6 +822,21 @@ final class OkapiClient { } /** + * Retrieves error information from an unsuccessful Okapi-response + * + * @param response + * response containing an error object + * @return OkapiError object with detailed information + */ + public static OkapiError decodeErrorResponse(HttpResponse response) { + final JSONResult result = new JSONResult(response); + if (!result.isSuccess) { + return new OkapiError(result.data); + } + return new OkapiError(new JSONObject()); + } + + /** * Encapsulates response state and content of an HTTP-request that expects a JSON result. <code>isSuccess</code> is * only true, if the response state was success and <code>data</code> is not null. */ |
