aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-07-26 23:05:40 +0200
committerrsudev <rasch@munin-soft.de>2013-07-26 23:05:40 +0200
commiteb15dddf8715bbc1926b8030ab4db7fbeec666cf (patch)
tree052b7d99c1cf4d8f6e22cf2eebe3fb840f417485 /main/src/cgeo/geocaching/connector
parentf86fa7a33393cd4ce2c7eff72479775b37dfeff3 (diff)
downloadcgeo-eb15dddf8715bbc1926b8030ab4db7fbeec666cf.zip
cgeo-eb15dddf8715bbc1926b8030ab4db7fbeec666cf.tar.gz
cgeo-eb15dddf8715bbc1926b8030ab4db7fbeec666cf.tar.bz2
Implements OKAPI Live access for opencaching.pl
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java14
-rw-r--r--main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java60
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiConnector.java15
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java30
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java27
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java46
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java46
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java4
10 files changed, 232 insertions, 26 deletions
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index eb09978..54e3447 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -28,16 +28,20 @@ public final class ConnectorFactory {
private static final UnknownConnector UNKNOWN_CONNECTOR = new UnknownConnector();
private static final IConnector[] CONNECTORS = new IConnector[] {
GCConnector.getInstance(),
- new OCApiLiveConnector("opencaching.de", "www.opencaching.de", "OC", R.string.oc_de_okapi_consumer_key, R.string.oc_de_okapi_consumer_secret, ApiSupport.current),
+ new OCApiLiveConnector("opencaching.de", "www.opencaching.de", "OC", "CC BY-NC-ND, alle Logeinträge © jeweiliger Autor",
+ R.string.oc_de_okapi_consumer_key, R.string.oc_de_okapi_consumer_secret,
+ R.string.pref_connectorOCActive, R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret, ApiSupport.current),
new OCConnector("OpenCaching.CZ", "www.opencaching.cz", "OZ"),
- new OCApiConnector("OpenCaching.CO.UK", "www.opencaching.org.uk", "OK", "arU4okouc4GEjMniE2fq", ApiSupport.oldapi),
+ new OCApiConnector("OpenCaching.CO.UK", "www.opencaching.org.uk", "OK", "arU4okouc4GEjMniE2fq", "CC BY-NC-SA 2.5", ApiSupport.oldapi),
new OCConnector("OpenCaching.ES", "www.opencachingspain.es", "OC"),
new OCConnector("OpenCaching.IT", "www.opencaching.it", "OC"),
new OCConnector("OpenCaching.JP", "www.opencaching.jp", "OJ"),
new OCConnector("OpenCaching.NO/SE", "www.opencaching.se", "OS"),
- new OCApiConnector("OpenCaching.NL", "www.opencaching.nl", "OB", "PdzU8jzIlcfMADXaYN8j", ApiSupport.current),
- new OCApiConnector("OpenCaching.PL", "www.opencaching.pl", "OP", "GkxM47WkUkLQXXsZ9qSh", ApiSupport.current),
- new OCApiConnector("OpenCaching.US", "www.opencaching.us", "OU", "pTsYAYSXFcfcRQnYE6uA", ApiSupport.oldapi),
+ new OCApiConnector("OpenCaching.NL", "www.opencaching.nl", "OB", "PdzU8jzIlcfMADXaYN8j", "CC BY-SA 3.0", ApiSupport.current),
+ new OCApiLiveConnector("opencaching.pl", "www.opencaching.pl", "OP", "CC BY-SA 3.0",
+ R.string.oc_pl_okapi_consumer_key, R.string.oc_pl_okapi_consumer_secret,
+ R.string.pref_connectorOCPLActive, R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret, ApiSupport.current),
+ new OCApiConnector("OpenCaching.US", "www.opencaching.us", "OU", "pTsYAYSXFcfcRQnYE6uA", "CC BY-NC-SA 2.5", ApiSupport.oldapi),
new OXConnector(),
new GeocachingAustraliaConnector(),
new GeopeitusConnector(),
diff --git a/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java b/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java
new file mode 100644
index 0000000..5a140a1
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java
@@ -0,0 +1,60 @@
+package cgeo.geocaching.connector.oc;
+
+public interface IOCAuthParams {
+
+ /**
+ * The site name: 'www.openaching...'
+ *
+ * @return
+ */
+ String getSite();
+
+ /**
+ * ResId of the Consumer key
+ *
+ * @return
+ */
+ int getCKResId();
+
+ /**
+ * ResId of the Consumer secret
+ *
+ * @return
+ */
+ int getCSResId();
+
+ /**
+ * ResId ot the Authorization title
+ *
+ * @return
+ */
+ int getAuthTitelResId();
+
+ /**
+ * Preference key of the public token
+ *
+ * @return
+ */
+ int getTokenPublicPrefKey();
+
+ /**
+ * Preference key of the secret token
+ *
+ * @return
+ */
+ int getTokenSecretPrefKey();
+
+ /**
+ * Preference key of the temporary public token (OAuth)
+ *
+ * @return
+ */
+ int getTempTokenPublicPrefKey();
+
+ /**
+ * Preference key of the temporary secret token (OAuth)
+ *
+ * @return
+ */
+ int getTempTokenSecretPrefKey();
+}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
index 4f365ec..d43d06b 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
@@ -27,11 +27,13 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
private final String cK;
private final ApiSupport apiSupport;
+ private final String licenseString;
- public OCApiConnector(String name, String host, String prefix, String cK, ApiSupport apiSupport) {
+ public OCApiConnector(String name, String host, String prefix, String cK, String licenseString, ApiSupport apiSupport) {
super(name, host, prefix);
this.cK = cK;
this.apiSupport = apiSupport;
+ this.licenseString = licenseString;
}
public void addAuthentication(final Parameters params) {
@@ -41,7 +43,7 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
@Override
public String getLicenseText(final Geocache cache) {
// NOT TO BE TRANSLATED
- return "© " + cache.getOwnerDisplayName() + ", <a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a>, CC-BY-NC-ND, alle Logeinträge © jeweiliger Autor";
+ return "© " + cache.getOwnerDisplayName() + ", <a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a>, " + licenseString;
}
@Override
@@ -77,4 +79,13 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
return apiSupport;
}
+ @SuppressWarnings("static-method")
+ public int getTokenPublicPrefKeyId() {
+ return 0;
+ }
+
+ @SuppressWarnings("static-method")
+ public int getTokenSecretPrefKeyId() {
+ return 0;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
index 5ca2d28..d35e54b 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
@@ -2,7 +2,6 @@ package cgeo.geocaching.connector.oc;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.cgData;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.ILoggingManager;
@@ -12,6 +11,7 @@ import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.connector.oc.UserInfo.UserInfoStatus;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.CryptUtils;
import org.apache.commons.lang3.StringUtils;
@@ -22,18 +22,24 @@ import android.os.Handler;
public class OCApiLiveConnector extends OCApiConnector implements ISearchByCenter, ISearchByViewPort, ILogin {
- private String cS;
+ private final String cS;
+ private final int isActivePrefKeyId;
+ private final int tokenPublicPrefKeyId;
+ private final int tokenSecretPrefKeyId;
private UserInfo userInfo = new UserInfo(StringUtils.EMPTY, 0, UserInfoStatus.NOT_RETRIEVED);
- public OCApiLiveConnector(String name, String host, String prefix, int cKResId, int cSResId, ApiSupport apiSupport) {
- super(name, host, prefix, CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cKResId)), apiSupport);
+ public OCApiLiveConnector(String name, String host, String prefix, String licenseString, int cKResId, int cSResId, int isActivePrefKeyId, int tokenPublicPrefKeyId, int tokenSecretPrefKeyId, ApiSupport apiSupport) {
+ super(name, host, prefix, CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cKResId)), licenseString, apiSupport);
cS = CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cSResId));
+ this.isActivePrefKeyId = isActivePrefKeyId;
+ this.tokenPublicPrefKeyId = tokenPublicPrefKeyId;
+ this.tokenSecretPrefKeyId = tokenSecretPrefKeyId;
}
@Override
public boolean isActivated() {
- return Settings.isOCConnectorActive();
+ return Settings.isOCConnectorActive(isActivePrefKeyId);
}
@Override
@@ -49,8 +55,8 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
@Override
public OAuthLevel getSupportedAuthLevel() {
- // TODO the tokens must be available connector specific
- if (StringUtils.isNotBlank(Settings.getOCDETokenPublic()) && StringUtils.isNotBlank(Settings.getOCDETokenSecret())) {
+
+ if (Settings.hasOCAuthorization(tokenPublicPrefKeyId, tokenSecretPrefKeyId)) {
return OAuthLevel.Level3;
}
return OAuthLevel.Level1;
@@ -62,6 +68,16 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
}
@Override
+ public int getTokenPublicPrefKeyId() {
+ return tokenPublicPrefKeyId;
+ }
+
+ @Override
+ public int getTokenSecretPrefKeyId() {
+ return tokenSecretPrefKeyId;
+ }
+
+ @Override
public boolean supportsWatchList() {
return true;
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
index 08d796e..10d6a66 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
@@ -1,42 +1,48 @@
package cgeo.geocaching.connector.oc;
import cgeo.geocaching.R;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.network.OAuthAuthorizationActivity;
+import cgeo.geocaching.settings.Settings;
import org.apache.commons.lang3.tuple.ImmutablePair;
public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
- public OCAuthorizationActivity() {
- super("www.opencaching.de",
+ final IOCAuthParams authParams;
+
+ public OCAuthorizationActivity(IOCAuthParams authParams) {
+ super(authParams.getSite(),
"/okapi/services/oauth/request_token",
"/okapi/services/oauth/authorize",
"/okapi/services/oauth/access_token",
false,
- cgeoapplication.getInstance().getResources().getString(R.string.oc_de_okapi_consumer_key),
- cgeoapplication.getInstance().getResources().getString(R.string.oc_de_okapi_consumer_secret));
+ cgeoapplication.getInstance().getResources().getString(authParams.getCKResId()),
+ cgeoapplication.getInstance().getResources().getString(authParams.getCSResId()));
+ this.authParams = authParams;
}
@Override
- protected ImmutablePair<String, String> getTempToken() {
- return Settings.getTempOCDEToken();
+ protected ImmutablePair<String, String> getTempTokens() {
+ return Settings.getTokenPair(authParams.getTempTokenPublicPrefKey(), authParams.getTempTokenSecretPrefKey());
}
@Override
protected void setTempTokens(String tokenPublic, String tokenSecret) {
- Settings.setOCDETempTokens(tokenPublic, tokenSecret);
+ Settings.setTokens(authParams.getTempTokenPublicPrefKey(), tokenPublic, authParams.getTempTokenSecretPrefKey(), tokenSecret);
}
@Override
protected void setTokens(String tokenPublic, String tokenSecret, boolean enable) {
- Settings.setOCDETokens(tokenPublic, tokenSecret, enable);
+ Settings.setTokens(authParams.getTokenPublicPrefKey(), tokenPublic, authParams.getTokenSecretPrefKey(), tokenSecret);
+ if (tokenPublic != null) {
+ Settings.setTokens(authParams.getTempTokenPublicPrefKey(), null, authParams.getTempTokenSecretPrefKey(), null);
+ }
}
@Override
protected String getAuthTitle() {
- return res.getString(R.string.auth_ocde);
+ return res.getString(authParams.getAuthTitelResId());
}
@Override
@@ -103,5 +109,4 @@ public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
protected String getAuthFinish() {
return res.getString(R.string.auth_finish_oc);
}
-
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
new file mode 100644
index 0000000..734b383
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
@@ -0,0 +1,46 @@
+package cgeo.geocaching.connector.oc;
+
+import cgeo.geocaching.R;
+
+public class OCDEAuthParams implements IOCAuthParams {
+
+ @Override
+ public String getSite() {
+ return "www.opencaching.de";
+ }
+
+ @Override
+ public int getCKResId() {
+ return R.string.oc_de_okapi_consumer_key;
+ }
+
+ @Override
+ public int getCSResId() {
+ return R.string.oc_de_okapi_consumer_secret;
+ }
+
+ @Override
+ public int getAuthTitelResId() {
+ return R.string.auth_ocde;
+ }
+
+ @Override
+ public int getTokenPublicPrefKey() {
+ return R.string.pref_ocde_tokenpublic;
+ }
+
+ @Override
+ public int getTokenSecretPrefKey() {
+ return R.string.pref_ocde_tokensecret;
+ }
+
+ @Override
+ public int getTempTokenPublicPrefKey() {
+ return R.string.pref_temp_ocde_token_public;
+ }
+
+ @Override
+ public int getTempTokenSecretPrefKey() {
+ return R.string.pref_temp_ocde_token_secret;
+ }
+}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
new file mode 100644
index 0000000..caf114c
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
@@ -0,0 +1,8 @@
+package cgeo.geocaching.connector.oc;
+
+public class OCDEAuthorizationActivity extends OCAuthorizationActivity {
+
+ public OCDEAuthorizationActivity() {
+ super(new OCDEAuthParams());
+ }
+}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
new file mode 100644
index 0000000..117e990
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
@@ -0,0 +1,46 @@
+package cgeo.geocaching.connector.oc;
+
+import cgeo.geocaching.R;
+
+public class OCPLAuthParams implements IOCAuthParams {
+
+ @Override
+ public String getSite() {
+ return "www.opencaching.pl";
+ }
+
+ @Override
+ public int getCKResId() {
+ return R.string.oc_pl_okapi_consumer_key;
+ }
+
+ @Override
+ public int getCSResId() {
+ return R.string.oc_pl_okapi_consumer_secret;
+ }
+
+ @Override
+ public int getAuthTitelResId() {
+ return R.string.auth_ocpl;
+ }
+
+ @Override
+ public int getTokenPublicPrefKey() {
+ return R.string.pref_ocpl_tokenpublic;
+ }
+
+ @Override
+ public int getTokenSecretPrefKey() {
+ return R.string.pref_ocpl_tokensecret;
+ }
+
+ @Override
+ public int getTempTokenPublicPrefKey() {
+ return R.string.pref_temp_ocpl_token_public;
+ }
+
+ @Override
+ public int getTempTokenSecretPrefKey() {
+ return R.string.pref_temp_ocpl_token_secret;
+ }
+}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
new file mode 100644
index 0000000..4f9ef96
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
@@ -0,0 +1,8 @@
+package cgeo.geocaching.connector.oc;
+
+public class OCPLAuthorizationActivity extends OCAuthorizationActivity {
+
+ public OCPLAuthorizationActivity() {
+ super(new OCPLAuthParams());
+ }
+}
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index 6959adf..be7b3a4 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -31,6 +31,7 @@ import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -612,7 +613,8 @@ final class OkapiClient {
params.add("langpref", getPreferredLanguage());
if (connector.getSupportedAuthLevel() == OAuthLevel.Level3) {
- OAuth.signOAuth(host, service.methodName, "GET", false, params, Settings.getOCDETokenPublic(), Settings.getOCDETokenSecret(), connector.getCK(), connector.getCS());
+ ImmutablePair<String, String> tokens = Settings.getTokenPair(connector.getTokenPublicPrefKeyId(), connector.getTokenSecretPrefKeyId());
+ OAuth.signOAuth(host, service.methodName, "GET", false, params, tokens.left, tokens.right, connector.getCK(), connector.getCS());
} else {
connector.addAuthentication(params);
}