diff options
| author | Marco Jacob <mjacob@union06.de> | 2013-06-01 21:09:56 +0200 |
|---|---|---|
| committer | Marco Jacob <mjacob@union06.de> | 2013-06-01 21:09:56 +0200 |
| commit | 4d980d5841914759ea983567e4693ff3b1986778 (patch) | |
| tree | dcfda70d387280a8f42736c6f5a8f7e234a0a296 | |
| parent | de0922ed82feb3d4715b8b354951c93852f4567a (diff) | |
| download | cgeo-4d980d5841914759ea983567e4693ff3b1986778.zip cgeo-4d980d5841914759ea983567e4693ff3b1986778.tar.gz cgeo-4d980d5841914759ea983567e4693ff3b1986778.tar.bz2 | |
add upload personal note to Connectors
4 files changed, 62 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java index 08bdb56..83c1b6f 100644 --- a/main/src/cgeo/geocaching/connector/AbstractConnector.java +++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java @@ -48,6 +48,17 @@ public abstract class AbstractConnector implements IConnector { } /** + * Uploading personal note to website + * + * @param cache + * @return success + */ + @Override + public boolean uploadPersonalNote(Geocache cache) { + throw new UnsupportedOperationException(); + } + + /** * {@link IConnector} */ @Override diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java index 9470e72..c44b946 100644 --- a/main/src/cgeo/geocaching/connector/IConnector.java +++ b/main/src/cgeo/geocaching/connector/IConnector.java @@ -151,13 +151,12 @@ public interface IConnector { public boolean supportsOwnCoordinates(); /** - * Uploading modified coordinates to website + * Uploading personal note to website * * @param cache - * @param wpt * @return success */ - public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt); + public boolean uploadPersonalNote(Geocache cache); /** * Reseting of modified coordinates on website to details @@ -168,6 +167,15 @@ public interface IConnector { public boolean deleteModifiedCoordinates(Geocache cache); /** + * Uploading modified coordinates to website + * + * @param cache + * @param wpt + * @return success + */ + public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt); + + /** * Return true if this connector is activated for online * interaction (download details, do searches, ...) * diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index f327dc1..d7fbbab 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -241,6 +241,15 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode, } @Override + public boolean uploadPersonalNote(Geocache cache) { + final boolean uploaded = GCParser.uploadPersonalNote(cache); + if (uploaded) { + cgData.saveChangedCache(cache); + } + return uploaded; + } + + @Override public SearchResult searchByCenter(Geopoint center) { // TODO make search by coordinate use this method. currently it is just a marker that this connector supports search by center return null; diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index f9c5fba..87f5985 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -1807,4 +1807,35 @@ public abstract class GCParser { return false; } + public static boolean uploadPersonalNote(Geocache cache) { + final String page = requestHtmlPage(cache.getGeocode(), null, "n", "0"); + final String userToken = BaseUtils.getMatch(page, GCConstants.PATTERN_USERTOKEN, ""); + if (StringUtils.isEmpty(userToken)) { + return false; + } + + try { + JSONObject jo = new JSONObject() + .put("dto", (new JSONObject() + .put("et", cache.getPersonalNote()) + .put("ut", userToken))); + + final String uriSuffix = "SetUserCacheNote"; + + final String uriPrefix = "http://www.geocaching.com/seek/cache_details.aspx/"; + HttpResponse response = Network.postJsonRequest(uriPrefix + uriSuffix, jo); + Log.i("Sending to " + uriPrefix + uriSuffix + " :" + jo.toString()); + + if (response != null && response.getStatusLine().getStatusCode() == 200) { + Log.i("GCParser.uploadPersonalNote - uploaded to GC.com"); + return true; + } + + } catch (JSONException e) { + Log.e("Unknown exception with json wrap code", e); + } + Log.e("GCParser.uploadPersonalNote - cannot upload personal note"); + return false; + } + } |
