aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2012-05-03 23:28:02 +0200
committerBananeweizen <bananeweizen@gmx.de>2012-05-03 23:28:02 +0200
commit061bac468098d92a8a05d725aee77c5fb0c023cd (patch)
treeeceb1e790aedf34df649b40d7bcc144e0dedcc53
parent1b16b37f5b0ce51ce5084518b6edc5b662fa636d (diff)
downloadcgeo-061bac468098d92a8a05d725aee77c5fb0c023cd.zip
cgeo-061bac468098d92a8a05d725aee77c5fb0c023cd.tar.gz
cgeo-061bac468098d92a8a05d725aee77c5fb0c023cd.tar.bz2
new: online search by geo code for OX caches
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java1
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXConnector.java (renamed from main/src/cgeo/geocaching/connector/OXConnector.java)17
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java48
3 files changed, 65 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 8f95028..0fb1efc 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.opencaching.ApiOpenCachingConnector;
import cgeo.geocaching.connector.opencaching.OpenCachingConnector;
+import cgeo.geocaching.connector.ox.OXConnector;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
diff --git a/main/src/cgeo/geocaching/connector/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
index cfde92f..c81011f 100644
--- a/main/src/cgeo/geocaching/connector/OXConnector.java
+++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
@@ -1,6 +1,11 @@
-package cgeo.geocaching.connector;
+package cgeo.geocaching.connector.ox;
+import cgeo.geocaching.SearchResult;
+import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.connector.AbstractConnector;
+import cgeo.geocaching.utils.CancellableHandler;
import java.util.regex.Pattern;
@@ -38,4 +43,14 @@ public class OXConnector extends AbstractConnector {
return "<a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a> data licensed under the Creative Commons BY-SA 3.0 License";
}
+ @Override
+ public SearchResult searchByGeocode(String geocode, String guid, cgeoapplication app, CancellableHandler handler) {
+ final cgCache cache = OpenCachingApi.searchByGeoCode(geocode);
+ if (cache == null) {
+ return null;
+ }
+ final SearchResult searchResult = new SearchResult();
+ searchResult.addCache(cache);
+ return searchResult.filterSearchResults(false, false, Settings.getCacheType());
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
new file mode 100644
index 0000000..304429f
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
@@ -0,0 +1,48 @@
+package cgeo.geocaching.connector.ox;
+
+import cgeo.geocaching.StoredList;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
+import cgeo.geocaching.files.GPX10Parser;
+import cgeo.geocaching.network.Network;
+import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.utils.CryptUtils;
+import cgeo.geocaching.utils.Log;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.http.HttpResponse;
+
+import java.util.Collection;
+import java.util.EnumSet;
+
+public class OpenCachingApi {
+
+ private static final String DEV_KEY = CryptUtils.rot13("PtqQnHo9RUTht3Np");
+
+ public static cgCache searchByGeoCode(final String geocode) {
+ final HttpResponse response = Network.getRequest("http://www.opencaching.com/api/geocache/" + geocode + ".gpx", new Parameters("Authorization", DEV_KEY));
+ if (response == null) {
+ return null;
+ }
+ Collection<cgCache> caches = null;
+ try {
+ caches = new GPX10Parser(StoredList.STANDARD_LIST_ID).parse(response.getEntity().getContent(), null);
+ } catch (Exception e) {
+ Log.e("Error importing from OpenCaching.com", e);
+ }
+ if (caches != null && CollectionUtils.isNotEmpty(caches)) {
+ final cgCache cache = caches.iterator().next();
+ cache.setUpdated(System.currentTimeMillis());
+ cache.setDetailedUpdate(cache.getUpdated());
+ cache.setDetailed(true);
+
+ // save full detailed caches
+ cgeoapplication.getInstance().saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ return cache;
+ }
+
+ return null;
+ }
+
+}