diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2012-05-03 23:28:02 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2012-05-03 23:28:02 +0200 |
| commit | 061bac468098d92a8a05d725aee77c5fb0c023cd (patch) | |
| tree | eceb1e790aedf34df649b40d7bcc144e0dedcc53 | |
| parent | 1b16b37f5b0ce51ce5084518b6edc5b662fa636d (diff) | |
| download | cgeo-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.java | 1 | ||||
| -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.java | 48 |
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; + } + +} |
