diff options
| author | Bananeweizen <Bananeweizen@gmx.de> | 2013-06-13 09:54:43 -0700 |
|---|---|---|
| committer | Bananeweizen <Bananeweizen@gmx.de> | 2013-06-13 09:54:43 -0700 |
| commit | b51add0731ca57a07596358a23191fc7dda602f9 (patch) | |
| tree | e81376b3eae626dfca2ca3daf41e7c087a935139 /main/src/cgeo/geocaching/connector/oc/OkapiClient.java | |
| parent | fe44f6b4610da1ded17258d2383786c293bc57e6 (diff) | |
| parent | 238952b58afbd2411ed91f09b58c4f934c1866ba (diff) | |
| download | cgeo-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.java | 65 |
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; + } + } + } |
