aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java16
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java15
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.
*/