From c5842bbfc4a90bf70284a8ab292b0a44a74b1f25 Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Sat, 4 Jan 2014 18:36:05 +0100 Subject: new: search by user/owner for opencaching --- .../cgeo/geocaching/connector/oc/OkapiClient.java | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'main/src/cgeo/geocaching/connector/oc/OkapiClient.java') diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java index c33891b..62e9bfc 100644 --- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java +++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java @@ -104,6 +104,7 @@ final class OkapiClient { private static final String LOG_DATE = "date"; private static final String LOG_USER = "user"; + private static final String USER_UUID = "uuid"; 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"; @@ -150,6 +151,24 @@ final class OkapiClient { return requestCaches(connector, params, valueMap); } + public static List getCachesByOwner(final String username, final OCApiConnector connector) { + final Parameters params = new Parameters("search_method", METHOD_SEARCH_ALL); + final Map valueMap = new LinkedHashMap(); + final String uuid = getUserUUID(connector, username); + valueMap.put("owner_uuid", uuid); + + return requestCaches(connector, params, valueMap); + } + + public static List getCachesByFinder(final String username, final OCApiConnector connector) { + final Parameters params = new Parameters("search_method", METHOD_SEARCH_ALL); + final Map valueMap = new LinkedHashMap(); + final String uuid = getUserUUID(connector, username); + valueMap.put("found_by", uuid); + + return requestCaches(connector, params, valueMap); + } + public static List getCachesNamed(final Geopoint center, final String namePart, final OCApiConnector connector) { final Map valueMap = new LinkedHashMap(); final Parameters params; @@ -698,6 +717,28 @@ final class OkapiClient { } } + public static String getUserUUID(final OCApiConnector connector, final String userName) { + final Parameters params = new Parameters("fields", USER_UUID, USER_USERNAME, userName); + + final JSONResult result = request(connector, OkapiService.SERVICE_USER_BY_USERNAME, params); + if (!result.isSuccess) { + final OkapiError error = new OkapiError(result.data); + Log.e("OkapiClient.getUserUUID: error getting user info: '" + error.getMessage() + "'"); + return null; + } + + JSONObject data = result.data; + if (!data.isNull(USER_UUID)) { + try { + return data.getString(USER_UUID); + } catch (final JSONException e) { + Log.e("OkapiClient.getUserUUID - uuid", e); + } + } + + return null; + } + public static UserInfo getUserInfo(final OCApiLiveConnector connector) { final Parameters params = new Parameters("fields", USER_INFO_FIELDS); -- cgit v1.1