aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2015-02-14 08:36:06 +0100
committerBananeweizen <bananeweizen@gmx.de>2015-02-14 08:36:06 +0100
commit75e2330c4496730e912222a4e015a41ce9d4ad3b (patch)
tree86255d83809ad5704d9198a8ec4a6368b7fa7371
parent0b77441d721dbd444c0a4675978fecf753ad79f6 (diff)
downloadcgeo-75e2330c4496730e912222a4e015a41ce9d4ad3b.zip
cgeo-75e2330c4496730e912222a4e015a41ce9d4ad3b.tar.gz
cgeo-75e2330c4496730e912222a4e015a41ce9d4ad3b.tar.bz2
#4670: register for extremcaching.com URLs
-rw-r--r--main/AndroidManifest.xml29
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java4
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXConnector.java11
-rw-r--r--tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java4
-rw-r--r--tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java6
6 files changed, 63 insertions, 1 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index ba27d06..25909d0 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -406,8 +406,35 @@
android:pathPrefix="/viewcache.php"
android:scheme="http" />
</intent-filter>
+
+ <!-- extremcaching.com related URLs -->
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ <action android:name="android.nfc.action.NDEF_DISCOVERED" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.BROWSABLE" />
+
+ <data
+ android:host="extremcaching.com"
+ android:pathPrefix="/index.php/output-2/"
+ android:scheme="http" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ <action android:name="android.nfc.action.NDEF_DISCOVERED" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.BROWSABLE" />
+
+ <data
+ android:host="www.extremcaching.com"
+ android:pathPrefix="/index.php/output-2/"
+ android:scheme="http" />
+ </intent-filter>
+
</activity>
-
+
<activity
android:name="cgeo.geocaching.TrackableActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index b48fc58..da3100c 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -207,6 +207,10 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
geocode = MapsWithMeCacheListApp.getCacheFromMapsWithMe(this, getIntent());
}
+ if (geocode == null && uri != null) {
+ geocode = ConnectorFactory.getGeocodeFromURL(uri.toString());
+ }
+
// try to get data from URI
if (geocode == null && guid == null && uri != null) {
final String uriHost = uri.getHost().toLowerCase(Locale.US);
diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
index 15c2dc2..68dbee7 100644
--- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java
+++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
@@ -234,4 +234,14 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
return R.string.pref_ecpassword;
}
+ @Override
+ @Nullable
+ public String getGeocodeFromUrl(@NonNull final String url) {
+ final String geocode = "EC" + StringUtils.substringAfter(url, "extremcaching.com/index.php/output-2/");
+ if (canHandle(geocode)) {
+ return geocode;
+ }
+ return super.getGeocodeFromUrl(url);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/connector/ox/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
index 41035d1..d1db301 100644
--- a/main/src/cgeo/geocaching/connector/ox/OXConnector.java
+++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
@@ -14,6 +14,7 @@ import cgeo.geocaching.location.Viewport;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.CancellableHandler;
+import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
@@ -109,4 +110,14 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
}
return new SearchResult(caches);
}
+
+ @Override
+ @Nullable
+ public String getGeocodeFromUrl(@NonNull final String url) {
+ final String geocode = StringUtils.substringAfter(url, "http://www.opencaching.com/de/#!geocache/");
+ if (canHandle(geocode)) {
+ return geocode;
+ }
+ return super.getGeocodeFromUrl(url);
+ }
}
diff --git a/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java b/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java
index aa6a185..f4073a9 100644
--- a/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java
+++ b/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java
@@ -32,4 +32,8 @@ public class ECConnectorTest extends TestCase {
return geocache;
}
+ public static void testGetGeocodeFromUrl() throws Exception {
+ assertThat(ECConnector.getInstance().getGeocodeFromUrl("http://extremcaching.com/index.php/output-2/738")).isEqualTo("EC738");
+ }
+
}
diff --git a/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java b/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java
index 5433387..11f2d66 100644
--- a/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java
+++ b/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java
@@ -14,4 +14,10 @@ public class OXConnectorTest extends TestCase {
assertThat(oxConnector.canHandle("OX_")).isFalse();
}
+ public static void testGetGeocodeFromUrl() {
+ final OXConnector connector = new OXConnector();
+ assertThat(connector.getGeocodeFromUrl("http://www.opencaching.com/de/#!geocache/OX1R421")).isEqualTo("OX1R421");
+ assertThat(connector.getGeocodeFromUrl("http://www.opencaching.com/#!geocache/OX1R421")).isEqualTo("OX1R421");
+ }
+
}