aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
diff options
context:
space:
mode:
authorBananeweizen <Bananeweizen@gmx.de>2013-06-13 09:54:43 -0700
committerBananeweizen <Bananeweizen@gmx.de>2013-06-13 09:54:43 -0700
commitb51add0731ca57a07596358a23191fc7dda602f9 (patch)
treee81376b3eae626dfca2ca3daf41e7c087a935139 /main/src/cgeo/geocaching/connector/oc/OkapiClient.java
parentfe44f6b4610da1ded17258d2383786c293bc57e6 (diff)
parent238952b58afbd2411ed91f09b58c4f934c1866ba (diff)
downloadcgeo-b51add0731ca57a07596358a23191fc7dda602f9.zip
cgeo-b51add0731ca57a07596358a23191fc7dda602f9.tar.gz
cgeo-b51add0731ca57a07596358a23191fc7dda602f9.tar.bz2
Merge pull request #2868 from rsudev/issue2811
Implements #2811, Login status after enabled cache sources
Diffstat (limited to 'main/src/cgeo/geocaching/connector/oc/OkapiClient.java')
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index 39f9ddf..9920e6f 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -100,6 +100,8 @@ final public class OkapiClient {
private static final String LOG_USER = "user";
private static final String USER_USERNAME = "username";
+ private static final String USER_CACHES_FOUND = "caches_found";
+ private static final String USER_INFO_FIELDS = "username|caches_found";
// the several realms of possible fields for cache retrieval:
// Core: for livemap requests (L3 - only with level 3 auth)
@@ -678,4 +680,67 @@ final public class OkapiClient {
}
}
+ public static UserInfo getUserInfo(OCApiLiveConnector connector) {
+ final Parameters params = new Parameters("fields", USER_INFO_FIELDS);
+
+ final JSONObject data = request(connector, OkapiService.SERVICE_USER, params);
+
+ if (data == null) {
+ return new UserInfo(StringUtils.EMPTY, 0, false);
+ }
+
+ String name = StringUtils.EMPTY;
+ int finds = 0;
+ boolean success = true;
+
+ if (!data.isNull(USER_USERNAME)) {
+ try {
+ name = data.getString(USER_USERNAME);
+ } catch (JSONException e) {
+ Log.e("OkapiClient.getUserInfo - name", e);
+ success = false;
+ }
+ } else {
+ success = false;
+ }
+
+ if (!data.isNull(USER_CACHES_FOUND)) {
+ try {
+ finds = data.getInt(USER_CACHES_FOUND);
+ } catch (JSONException e) {
+ Log.e("OkapiClient.getUserInfo - finds", e);
+ success = false;
+ }
+ } else {
+ success = false;
+ }
+
+ return new UserInfo(name, finds, success);
+ }
+
+ public static class UserInfo {
+
+ private final String name;
+ private final int finds;
+ private final boolean retrieveSuccessful;
+
+ UserInfo(String name, int finds, boolean retrieveSuccessful) {
+ this.name = name;
+ this.finds = finds;
+ this.retrieveSuccessful = retrieveSuccessful;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getFinds() {
+ return finds;
+ }
+
+ public boolean isRetrieveSuccessful() {
+ return retrieveSuccessful;
+ }
+ }
+
}