aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2014-04-07 22:27:55 +0200
committerrsudev <rasch@munin-soft.de>2014-04-07 22:27:55 +0200
commit0c407b7982e9f018853812731d69dc90f32358a2 (patch)
treec09d1baef168392afd2a90cd53b31dd3943cf8bd
parent3958777a5cf254ac2bfbb5cb569cfbd42abfb49f (diff)
downloadcgeo-0c407b7982e9f018853812731d69dc90f32358a2.zip
cgeo-0c407b7982e9f018853812731d69dc90f32358a2.tar.gz
cgeo-0c407b7982e9f018853812731d69dc90f32358a2.tar.bz2
Refactoring opencaching implementation
-rw-r--r--main/AndroidManifest.xml76
-rw-r--r--main/src/cgeo/geocaching/Intents.java16
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java3
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCAuthParams.java70
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java45
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java51
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCNLAuthParams.java51
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCNLAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java51
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCROAuthParams.java51
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCROAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCUSAuthParams.java51
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCUSAuthorizationActivity.java8
-rw-r--r--main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java94
-rw-r--r--main/src/cgeo/geocaching/settings/OAuthPreference.java31
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java11
-rw-r--r--main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java19
-rw-r--r--main/src/cgeo/geocaching/utils/BundleUtils.java17
20 files changed, 230 insertions, 447 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index 34017d9..7836d07 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -445,7 +445,7 @@
</service>
<activity
- android:name=".connector.oc.OCDEAuthorizationActivity"
+ android:name=".connector.oc.OCAuthorizationActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:launchMode="singleTask"
@@ -458,79 +458,7 @@
<data
android:host="www.cgeo.org"
- android:pathPrefix="/opencaching.de/"
- android:scheme="callback" />
- </intent-filter>
- </activity>
- <activity
- android:name=".connector.oc.OCPLAuthorizationActivity"
- android:configChanges="keyboardHidden|orientation"
- android:label="@string/app_name"
- android:launchMode="singleTask"
- android:windowSoftInputMode="stateHidden" >
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
-
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
-
- <data
- android:host="www.cgeo.org"
- android:pathPrefix="/opencaching.pl/"
- android:scheme="callback" />
- </intent-filter>
- </activity>
- <activity
- android:name=".connector.oc.OCNLAuthorizationActivity"
- android:configChanges="keyboardHidden|orientation"
- android:label="@string/app_name"
- android:launchMode="singleTask"
- android:windowSoftInputMode="stateHidden" >
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
-
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
-
- <data
- android:host="www.cgeo.org"
- android:pathPrefix="/opencaching.nl/"
- android:scheme="callback" />
- </intent-filter>
- </activity>
- <activity
- android:name=".connector.oc.OCUSAuthorizationActivity"
- android:configChanges="keyboardHidden|orientation"
- android:label="@string/app_name"
- android:launchMode="singleTask"
- android:windowSoftInputMode="stateHidden" >
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
-
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
-
- <data
- android:host="www.cgeo.org"
- android:pathPrefix="/opencaching.us/"
- android:scheme="callback" />
- </intent-filter>
- </activity>
- <activity
- android:name=".connector.oc.OCROAuthorizationActivity"
- android:configChanges="keyboardHidden|orientation"
- android:label="@string/app_name"
- android:launchMode="singleTask"
- android:windowSoftInputMode="stateHidden" >
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
-
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
-
- <data
- android:host="www.cgeo.org"
- android:pathPrefix="/opencaching.ro/"
+ android:pathPrefix="/opencaching"
android:scheme="callback" />
</intent-filter>
</activity>
diff --git a/main/src/cgeo/geocaching/Intents.java b/main/src/cgeo/geocaching/Intents.java
index 5c969a1..a55c22a 100644
--- a/main/src/cgeo/geocaching/Intents.java
+++ b/main/src/cgeo/geocaching/Intents.java
@@ -33,4 +33,20 @@ public class Intents {
private static final String PREFIX_ACTION = "cgeo.geocaching.intent.action.";
public static final String ACTION_GEOCACHE = PREFIX_ACTION + "GEOCACHE";
public static final String ACTION_TRACKABLE = PREFIX_ACTION + "TRACKABLE";
+
+ private static final String PREFIX_OAUTH = "cgeo.geocaching.intent.oauth.";
+ public static final String EXTRA_OAUTH_HOST = PREFIX_OAUTH + "host";
+ public static final String EXTRA_OAUTH_PATH_REQUEST = PREFIX_OAUTH + "request";
+ public static final String EXTRA_OAUTH_PATH_AUTHORIZE = PREFIX_OAUTH + "authorize";
+ public static final String EXTRA_OAUTH_PATH_ACCESS = PREFIX_OAUTH + "access";
+ public static final String EXTRA_OAUTH_HTTPS = PREFIX_OAUTH + "https";
+ public static final String EXTRA_OAUTH_CONSUMER_KEY = PREFIX_OAUTH + "ConsumerKey";
+ public static final String EXTRA_OAUTH_CONSUMER_SECRET = PREFIX_OAUTH + "ConsumerSecret";
+ public static final String EXTRA_OAUTH_CALLBACK = PREFIX_OAUTH + "callback";
+
+ public static final String EXTRA_OAUTH_TITLE_RES_ID = PREFIX_OAUTH + "titleresId";
+ public static final String EXTRA_OAUTH_TEMP_TOKEN_KEY_PREF = PREFIX_OAUTH + "tempKeyPref";
+ public static final String EXTRA_OAUTH_TEMP_TOKEN_SECRET_PREF = PREFIX_OAUTH + "tempSecretPref";
+ public static final String EXTRA_OAUTH_TOKEN_PUBLIC_KEY = PREFIX_OAUTH + "publicTokenPref";
+ public static final String EXTRA_OAUTH_TOKEN_SECRET_KEY = PREFIX_OAUTH + "secretTokenPref";
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 9e4e02e..1f23df8 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -29,7 +29,6 @@ import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import rx.functions.Func1;
-import rx.schedulers.Schedulers;
import java.util.ArrayList;
import java.util.Arrays;
@@ -60,7 +59,7 @@ public final class ConnectorFactory {
new OCApiLiveConnector("opencaching.us", "www.opencaching.us", "OU", "CC BY-NC-SA 2.5",
R.string.oc_us_okapi_consumer_key, R.string.oc_us_okapi_consumer_secret,
R.string.pref_connectorOCUSActive, R.string.pref_ocus_tokenpublic, R.string.pref_ocus_tokensecret, ApiSupport.current),
- new OCApiLiveConnector("opencaching.ro", "oc.opencaching.ro", "OR", "CC BY-SA 3.0",
+ new OCApiLiveConnector("opencaching.ro", "www.opencaching.ro", "OR", "CC BY-SA 3.0",
R.string.oc_ro_okapi_consumer_key, R.string.oc_ro_okapi_consumer_secret,
R.string.pref_connectorOCROActive, R.string.pref_ocro_tokenpublic, R.string.pref_ocro_tokensecret, ApiSupport.current),
new OXConnector(),
diff --git a/main/src/cgeo/geocaching/connector/oc/OCAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCAuthParams.java
new file mode 100644
index 0000000..131ddad
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/OCAuthParams.java
@@ -0,0 +1,70 @@
+package cgeo.geocaching.connector.oc;
+
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.Intents;
+import cgeo.geocaching.R;
+import cgeo.geocaching.network.OAuthAuthorizationActivity.OAuthParameters;
+
+import org.eclipse.jdt.annotation.NonNull;
+
+import android.content.Intent;
+
+public class OCAuthParams extends OAuthParameters {
+
+ public static final OCAuthParams OC_DE_AUTH_PARAMS = new OCAuthParams("www.opencaching.de", false,
+ R.string.oc_de_okapi_consumer_key, R.string.oc_de_okapi_consumer_secret, "callback://www.cgeo.org/opencaching.de/",
+ R.string.auth_ocde, R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret, R.string.pref_temp_ocde_token_public, R.string.pref_temp_ocde_token_secret);
+
+ public static final OCAuthParams OC_NL_AUTH_PARAMS = new OCAuthParams("www.opencaching.nl", false,
+ R.string.oc_nl_okapi_consumer_key, R.string.oc_nl_okapi_consumer_secret, "callback://www.cgeo.org/opencaching.nl/",
+ R.string.auth_ocnl, R.string.pref_ocnl_tokenpublic, R.string.pref_ocnl_tokensecret, R.string.pref_temp_ocnl_token_public, R.string.pref_temp_ocnl_token_secret);
+
+ public static final OCAuthParams OC_PL_AUTH_PARAMS = new OCAuthParams("www.opencaching.pl", false,
+ R.string.oc_pl_okapi_consumer_key, R.string.oc_pl_okapi_consumer_secret, "callback://www.cgeo.org/opencaching.pl/",
+ R.string.auth_ocpl, R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret, R.string.pref_temp_ocpl_token_public, R.string.pref_temp_ocpl_token_secret);
+
+ public static final OCAuthParams OC_US_AUTH_PARAMS = new OCAuthParams("www.opencaching.us", false,
+ R.string.oc_us_okapi_consumer_key, R.string.oc_us_okapi_consumer_secret, "callback://www.cgeo.org/opencaching.us/",
+ R.string.auth_ocus, R.string.pref_ocus_tokenpublic, R.string.pref_ocus_tokensecret, R.string.pref_temp_ocus_token_public, R.string.pref_temp_ocus_token_secret);
+
+ public static final OCAuthParams OC_RO_AUTH_PARAMS = new OCAuthParams("www.opencaching.ro", false,
+ R.string.oc_ro_okapi_consumer_key, R.string.oc_ro_okapi_consumer_secret, "callback://www.cgeo.org/opencaching.ro/",
+ R.string.auth_ocro, R.string.pref_ocro_tokenpublic, R.string.pref_ocro_tokensecret, R.string.pref_temp_ocro_token_public, R.string.pref_temp_ocro_token_secret);
+
+ public final int authTitleResId;
+ public final int tokenPublicPrefKey;
+ public final int tokenSecretPrefKey;
+ public final int tempTokenPublicPrefKey;
+ public final int tempTokenSecretPrefKey;
+
+ public OCAuthParams(@NonNull String host, boolean https, int consumerKeyResId, int consumerSecretResId, @NonNull String callback,
+ int authTitleResId, int tokenPublicPrefKey, int tokenSecretPrefKey, int tempTokePublicPrefKey, int tempTokenSecretPrefKey) {
+ super(host, "/okapi/services/oauth/request_token",
+ "/okapi/services/oauth/authorize",
+ "/okapi/services/oauth/access_token",
+ https,
+ CgeoApplication.getInstance().getString(consumerKeyResId),
+ CgeoApplication.getInstance().getString(consumerSecretResId),
+ callback);
+ this.authTitleResId = authTitleResId;
+ this.tokenPublicPrefKey = tokenPublicPrefKey;
+ this.tokenSecretPrefKey = tokenSecretPrefKey;
+ this.tempTokenPublicPrefKey = tempTokePublicPrefKey;
+ this.tempTokenSecretPrefKey = tempTokenSecretPrefKey;
+ }
+
+ @Override
+ public void setOAuthExtras(Intent intent) {
+ super.setOAuthExtras(intent);
+
+ if (intent != null) {
+ intent.putExtra(Intents.EXTRA_OAUTH_TITLE_RES_ID, authTitleResId);
+ intent.putExtra(Intents.EXTRA_OAUTH_TOKEN_PUBLIC_KEY, tokenPublicPrefKey);
+ intent.putExtra(Intents.EXTRA_OAUTH_TOKEN_SECRET_KEY, tokenSecretPrefKey);
+ intent.putExtra(Intents.EXTRA_OAUTH_TEMP_TOKEN_KEY_PREF, tempTokenPublicPrefKey);
+ intent.putExtra(Intents.EXTRA_OAUTH_TEMP_TOKEN_SECRET_PREF, tempTokenSecretPrefKey);
+ }
+ }
+
+
+}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
index 19f4447..eb7e7a1 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.connector.oc;
-import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
import cgeo.geocaching.connector.oc.OkapiError.OkapiErrors;
import cgeo.geocaching.network.OAuthAuthorizationActivity;
@@ -12,43 +12,51 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.eclipse.jdt.annotation.Nullable;
-public abstract class OCAuthorizationActivity extends OAuthAuthorizationActivity {
+import android.os.Bundle;
- final IOCAuthParams authParams;
+public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
- 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(authParams.getCKResId()),
- CgeoApplication.getInstance().getResources().getString(authParams.getCSResId()),
- authParams.getCallbackUri());
- this.authParams = authParams;
+ private int titleResId;
+ private int tokenPublicPrefKey;
+ private int tokenSecretPrefKey;
+ private int tempTokenPublicPrefKey;
+ private int tempTokenSecretPrefKey;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ titleResId = extras.getInt(Intents.EXTRA_OAUTH_TITLE_RES_ID);
+ tokenPublicPrefKey = extras.getInt(Intents.EXTRA_OAUTH_TOKEN_PUBLIC_KEY);
+ tokenSecretPrefKey = extras.getInt(Intents.EXTRA_OAUTH_TOKEN_SECRET_KEY);
+ tempTokenPublicPrefKey = extras.getInt(Intents.EXTRA_OAUTH_TEMP_TOKEN_KEY_PREF);
+ tempTokenSecretPrefKey = extras.getInt(Intents.EXTRA_OAUTH_TEMP_TOKEN_SECRET_PREF);
+ }
+ super.onCreate(savedInstanceState);
}
@Override
protected ImmutablePair<String, String> getTempTokens() {
- return Settings.getTokenPair(authParams.getTempTokenPublicPrefKey(), authParams.getTempTokenSecretPrefKey());
+ return Settings.getTokenPair(tempTokenPublicPrefKey, tempTokenSecretPrefKey);
}
@Override
protected void setTempTokens(@Nullable final String tokenPublic, @Nullable final String tokenSecret) {
- Settings.setTokens(authParams.getTempTokenPublicPrefKey(), tokenPublic, authParams.getTempTokenSecretPrefKey(), tokenSecret);
+ Settings.setTokens(tempTokenPublicPrefKey, tokenPublic, tempTokenSecretPrefKey, tokenSecret);
}
@Override
protected void setTokens(@Nullable final String tokenPublic, @Nullable final String tokenSecret, final boolean enable) {
- Settings.setTokens(authParams.getTokenPublicPrefKey(), tokenPublic, authParams.getTokenSecretPrefKey(), tokenSecret);
+ Settings.setTokens(tokenPublicPrefKey, tokenPublic, tokenSecretPrefKey, tokenSecret);
if (tokenPublic != null) {
- Settings.setTokens(authParams.getTempTokenPublicPrefKey(), null, authParams.getTempTokenSecretPrefKey(), null);
+ Settings.setTokens(tempTokenPublicPrefKey, null, tempTokenSecretPrefKey, null);
}
}
@Override
protected String getAuthTitle() {
- return res.getString(authParams.getAuthTitleResId());
+ return res.getString(titleResId);
}
@Override
@@ -67,5 +75,4 @@ public abstract class OCAuthorizationActivity extends OAuthAuthorizationActivity
}
return StringUtils.EMPTY;
}
-
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
deleted file mode 100644
index 17c1cb8..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-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 getAuthTitleResId() {
- 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;
- }
-
- @Override
- public String getCallbackUri() {
- return "callback://www.cgeo.org/opencaching.de/";
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
deleted file mode 100644
index 1d2aa49..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-public final class OCDEAuthorizationActivity extends OCAuthorizationActivity {
-
- public OCDEAuthorizationActivity() {
- super(new OCDEAuthParams());
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCNLAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCNLAuthParams.java
deleted file mode 100644
index 31d8590..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCNLAuthParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-import cgeo.geocaching.R;
-
-public class OCNLAuthParams implements IOCAuthParams {
-
- @Override
- public String getSite() {
- return "www.opencaching.nl";
- }
-
- @Override
- public int getCKResId() {
- return R.string.oc_nl_okapi_consumer_key;
- }
-
- @Override
- public int getCSResId() {
- return R.string.oc_nl_okapi_consumer_secret;
- }
-
- @Override
- public int getAuthTitleResId() {
- return R.string.auth_ocnl;
- }
-
- @Override
- public int getTokenPublicPrefKey() {
- return R.string.pref_ocnl_tokenpublic;
- }
-
- @Override
- public int getTokenSecretPrefKey() {
- return R.string.pref_ocnl_tokensecret;
- }
-
- @Override
- public int getTempTokenPublicPrefKey() {
- return R.string.pref_temp_ocnl_token_public;
- }
-
- @Override
- public int getTempTokenSecretPrefKey() {
- return R.string.pref_temp_ocnl_token_secret;
- }
-
- @Override
- public String getCallbackUri() {
- return "callback://www.cgeo.org/opencaching.nl/";
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCNLAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCNLAuthorizationActivity.java
deleted file mode 100644
index dfd21ec..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCNLAuthorizationActivity.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-public final class OCNLAuthorizationActivity extends OCAuthorizationActivity {
-
- public OCNLAuthorizationActivity() {
- super(new OCNLAuthParams());
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
deleted file mode 100644
index dfe03e5..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-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 getAuthTitleResId() {
- 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;
- }
-
- @Override
- public String getCallbackUri() {
- return "callback://www.cgeo.org/opencaching.pl/";
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
deleted file mode 100644
index 30ea150..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-public final class OCPLAuthorizationActivity extends OCAuthorizationActivity {
-
- public OCPLAuthorizationActivity() {
- super(new OCPLAuthParams());
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCROAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCROAuthParams.java
deleted file mode 100644
index 6805001..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCROAuthParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-import cgeo.geocaching.R;
-
-public class OCROAuthParams implements IOCAuthParams {
-
- @Override
- public String getSite() {
- return "oc.opencaching.ro";
- }
-
- @Override
- public int getCKResId() {
- return R.string.oc_ro_okapi_consumer_key;
- }
-
- @Override
- public int getCSResId() {
- return R.string.oc_ro_okapi_consumer_secret;
- }
-
- @Override
- public int getAuthTitleResId() {
- return R.string.auth_ocro;
- }
-
- @Override
- public int getTokenPublicPrefKey() {
- return R.string.pref_ocro_tokenpublic;
- }
-
- @Override
- public int getTokenSecretPrefKey() {
- return R.string.pref_ocro_tokensecret;
- }
-
- @Override
- public int getTempTokenPublicPrefKey() {
- return R.string.pref_temp_ocro_token_public;
- }
-
- @Override
- public int getTempTokenSecretPrefKey() {
- return R.string.pref_temp_ocro_token_secret;
- }
-
- @Override
- public String getCallbackUri() {
- return "callback://www.cgeo.org/opencaching.ro/";
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCROAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCROAuthorizationActivity.java
deleted file mode 100644
index 6f3c52a..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCROAuthorizationActivity.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-public final class OCROAuthorizationActivity extends OCAuthorizationActivity {
-
- public OCROAuthorizationActivity() {
- super(new OCROAuthParams());
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCUSAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCUSAuthParams.java
deleted file mode 100644
index b01d70d..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCUSAuthParams.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-import cgeo.geocaching.R;
-
-public class OCUSAuthParams implements IOCAuthParams {
-
- @Override
- public String getSite() {
- return "www.opencaching.us";
- }
-
- @Override
- public int getCKResId() {
- return R.string.oc_us_okapi_consumer_key;
- }
-
- @Override
- public int getCSResId() {
- return R.string.oc_us_okapi_consumer_secret;
- }
-
- @Override
- public int getAuthTitleResId() {
- return R.string.auth_ocus;
- }
-
- @Override
- public int getTokenPublicPrefKey() {
- return R.string.pref_ocus_tokenpublic;
- }
-
- @Override
- public int getTokenSecretPrefKey() {
- return R.string.pref_ocus_tokensecret;
- }
-
- @Override
- public int getTempTokenPublicPrefKey() {
- return R.string.pref_temp_ocus_token_public;
- }
-
- @Override
- public int getTempTokenSecretPrefKey() {
- return R.string.pref_temp_ocus_token_secret;
- }
-
- @Override
- public String getCallbackUri() {
- return "callback://www.cgeo.org/opencaching.us/";
- }
-}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCUSAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCUSAuthorizationActivity.java
deleted file mode 100644
index 05d91df..0000000
--- a/main/src/cgeo/geocaching/connector/oc/OCUSAuthorizationActivity.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cgeo.geocaching.connector.oc;
-
-public final class OCUSAuthorizationActivity extends OCAuthorizationActivity {
-
- public OCUSAuthorizationActivity() {
- super(new OCUSAuthParams());
- }
-}
diff --git a/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java b/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java
index a5a2383..e74751b 100644
--- a/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java
@@ -2,8 +2,10 @@ package cgeo.geocaching.network;
import butterknife.InjectView;
+import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
import cgeo.geocaching.activity.AbstractActivity;
+import cgeo.geocaching.utils.BundleUtils;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.MatcherWrapper;
@@ -39,14 +41,14 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
private static final int STATUS_SUCCESS = 1;
private static final int STATUS_ERROR_EXT_MSG = 2;
- @NonNull final private String host;
- @NonNull final private String pathRequest;
- @NonNull final private String pathAuthorize;
- @NonNull final private String pathAccess;
- private final boolean https;
- @NonNull final private String consumerKey;
- @NonNull final private String consumerSecret;
- @NonNull final private String callback;
+ @NonNull private String host = StringUtils.EMPTY;
+ @NonNull private String pathRequest = StringUtils.EMPTY;
+ @NonNull private String pathAuthorize = StringUtils.EMPTY;
+ @NonNull private String pathAccess = StringUtils.EMPTY;
+ private boolean https = false;
+ @NonNull private String consumerKey = StringUtils.EMPTY;
+ @NonNull private String consumerSecret = StringUtils.EMPTY;
+ @NonNull private String callback = StringUtils.EMPTY;
private String OAtoken = null;
private String OAtokenSecret = null;
private final Pattern paramsPattern1 = Pattern.compile("oauth_token=([a-zA-Z0-9\\-\\_.]+)");
@@ -56,6 +58,7 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
@InjectView(R.id.auth_2) protected TextView auth_2;
private ProgressDialog requestTokenDialog = null;
private ProgressDialog changeTokensDialog = null;
+
private Handler requestTokenHandler = new Handler() {
@Override
@@ -81,6 +84,7 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
}
};
+
private Handler changeTokensHandler = new Handler() {
@Override
@@ -100,29 +104,22 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
}
};
- public OAuthAuthorizationActivity
- (@NonNull String host,
- @NonNull String pathRequest,
- @NonNull String pathAuthorize,
- @NonNull String pathAccess,
- boolean https,
- @NonNull String consumerKey,
- @NonNull String consumerSecret,
- @NonNull String callback) {
- this.host = host;
- this.pathRequest = pathRequest;
- this.pathAuthorize = pathAuthorize;
- this.pathAccess = pathAccess;
- this.https = https;
- this.consumerKey = consumerKey;
- this.consumerSecret = consumerSecret;
- this.callback = callback;
- }
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, R.layout.authorization_activity, true);
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ host = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_HOST, host);
+ pathRequest = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_PATH_REQUEST, pathRequest);
+ pathAuthorize = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_PATH_AUTHORIZE, pathAuthorize);
+ pathAccess = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_PATH_ACCESS, pathAccess);
+ https = extras.getBoolean(Intents.EXTRA_OAUTH_HTTPS, https);
+ consumerKey = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_CONSUMER_KEY, consumerKey);
+ consumerSecret = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_CONSUMER_SECRET, consumerSecret);
+ callback = BundleUtils.getString(extras, Intents.EXTRA_OAUTH_CALLBACK, callback);
+ }
+
setTitle(getAuthTitle());
auth_1.setText(getAuthExplainShort());
@@ -355,4 +352,47 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
protected String getAuthAuthorize() {
return res.getString(R.string.auth_authorize, getAuthTitle());
}
+
+ public static class OAuthParameters {
+ @NonNull public final String host;
+ @NonNull public final String pathRequest;
+ @NonNull public final String pathAuthorize;
+ @NonNull public final String pathAccess;
+ public final boolean https;
+ @NonNull public final String consumerKey;
+ @NonNull public final String consumerSecret;
+ @NonNull public final String callback;
+
+ public OAuthParameters(@NonNull String host,
+ @NonNull String pathRequest,
+ @NonNull String pathAuthorize,
+ @NonNull String pathAccess,
+ boolean https,
+ @NonNull String consumerKey,
+ @NonNull String consumerSecret,
+ @NonNull String callback) {
+ this.host = host;
+ this.pathRequest = pathRequest;
+ this.pathAuthorize = pathAuthorize;
+ this.pathAccess = pathAccess;
+ this.https = https;
+ this.consumerKey = consumerKey;
+ this.consumerSecret = consumerSecret;
+ this.callback = callback;
+ }
+
+ public void setOAuthExtras(Intent intent) {
+ if (intent != null) {
+ intent.putExtra(Intents.EXTRA_OAUTH_HOST, host);
+ intent.putExtra(Intents.EXTRA_OAUTH_PATH_REQUEST, pathRequest);
+ intent.putExtra(Intents.EXTRA_OAUTH_PATH_AUTHORIZE, pathAuthorize);
+ intent.putExtra(Intents.EXTRA_OAUTH_PATH_ACCESS, pathAccess);
+ intent.putExtra(Intents.EXTRA_OAUTH_HTTPS, https);
+ intent.putExtra(Intents.EXTRA_OAUTH_CONSUMER_KEY, consumerKey);
+ intent.putExtra(Intents.EXTRA_OAUTH_CONSUMER_SECRET, consumerSecret);
+ intent.putExtra(Intents.EXTRA_OAUTH_CALLBACK, callback);
+ }
+ }
+
+ }
}
diff --git a/main/src/cgeo/geocaching/settings/OAuthPreference.java b/main/src/cgeo/geocaching/settings/OAuthPreference.java
index c662f37..477af3f 100644
--- a/main/src/cgeo/geocaching/settings/OAuthPreference.java
+++ b/main/src/cgeo/geocaching/settings/OAuthPreference.java
@@ -2,11 +2,9 @@ package cgeo.geocaching.settings;
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.connector.oc.OCDEAuthorizationActivity;
-import cgeo.geocaching.connector.oc.OCNLAuthorizationActivity;
-import cgeo.geocaching.connector.oc.OCPLAuthorizationActivity;
-import cgeo.geocaching.connector.oc.OCROAuthorizationActivity;
-import cgeo.geocaching.connector.oc.OCUSAuthorizationActivity;
+import cgeo.geocaching.connector.oc.OCAuthParams;
+import cgeo.geocaching.connector.oc.OCAuthorizationActivity;
+import cgeo.geocaching.network.OAuthAuthorizationActivity.OAuthParameters;
import cgeo.geocaching.twitter.TwitterAuthorizationActivity;
import android.content.Context;
@@ -19,20 +17,22 @@ public class OAuthPreference extends AbstractClickablePreference {
private static final int NO_KEY = -1;
private enum OAuthActivityMapping {
- NONE(NO_KEY, null),
- OCDE(R.string.pref_fakekey_ocde_authorization, OCDEAuthorizationActivity.class),
- OCPL(R.string.pref_fakekey_ocpl_authorization, OCPLAuthorizationActivity.class),
- OCNL(R.string.pref_fakekey_ocnl_authorization, OCNLAuthorizationActivity.class),
- OCUS(R.string.pref_fakekey_ocus_authorization, OCUSAuthorizationActivity.class),
- OCRO(R.string.pref_fakekey_ocro_authorization, OCROAuthorizationActivity.class),
- TWITTER(R.string.pref_fakekey_twitter_authorization, TwitterAuthorizationActivity.class);
+ NONE(NO_KEY, null, null),
+ OCDE(R.string.pref_fakekey_ocde_authorization, OCAuthorizationActivity.class, OCAuthParams.OC_DE_AUTH_PARAMS),
+ OCPL(R.string.pref_fakekey_ocpl_authorization, OCAuthorizationActivity.class, OCAuthParams.OC_PL_AUTH_PARAMS),
+ OCNL(R.string.pref_fakekey_ocnl_authorization, OCAuthorizationActivity.class, OCAuthParams.OC_NL_AUTH_PARAMS),
+ OCUS(R.string.pref_fakekey_ocus_authorization, OCAuthorizationActivity.class, OCAuthParams.OC_US_AUTH_PARAMS),
+ OCRO(R.string.pref_fakekey_ocro_authorization, OCAuthorizationActivity.class, OCAuthParams.OC_RO_AUTH_PARAMS),
+ TWITTER(R.string.pref_fakekey_twitter_authorization, TwitterAuthorizationActivity.class, TwitterAuthorizationActivity.TWITTER_OAUTH_PARAMS);
public final int prefKeyId;
public final Class<?> authActivity;
+ public final OAuthParameters authParams;
- OAuthActivityMapping(int prefKeyId, Class<?> clazz) {
+ OAuthActivityMapping(int prefKeyId, Class<?> authActivity, OAuthParameters authParams) {
this.prefKeyId = prefKeyId;
- this.authActivity = clazz;
+ this.authActivity = authActivity;
+ this.authParams = authParams;
}
}
@@ -64,9 +64,10 @@ public class OAuthPreference extends AbstractClickablePreference {
return new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- if (oAuthMapping.authActivity != null) {
+ if (oAuthMapping.authActivity != null && oAuthMapping.authParams != null) {
Intent authIntent = new Intent(preference.getContext(),
oAuthMapping.authActivity);
+ oAuthMapping.authParams.setOAuthExtras(authIntent);
activity.startActivityForResult(authIntent,
oAuthMapping.prefKeyId);
}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index 63f6398..3fdf161 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -10,6 +10,7 @@ import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum;
import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.gc.GCLogin;
+import cgeo.geocaching.connector.oc.OCAuthParams;
import cgeo.geocaching.files.SimpleDirChooser;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.interfaces.MapSource;
@@ -162,11 +163,11 @@ public class SettingsActivity extends PreferenceActivity {
getPreference(R.string.pref_connectorGCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
getPreference(R.string.pref_connectorECActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
setWebsite(R.string.pref_fakekey_gc_website, GCConnector.getInstance().getHost());
- setWebsite(R.string.pref_fakekey_ocde_website, "opencaching.de");
- setWebsite(R.string.pref_fakekey_ocpl_website, "opencaching.pl");
- setWebsite(R.string.pref_fakekey_ocnl_website, "opencaching.nl");
- setWebsite(R.string.pref_fakekey_ocus_website, "opencaching.us");
- setWebsite(R.string.pref_fakekey_ocro_website, "opencaching.ro");
+ setWebsite(R.string.pref_fakekey_ocde_website, OCAuthParams.OC_DE_AUTH_PARAMS.host);
+ setWebsite(R.string.pref_fakekey_ocpl_website, OCAuthParams.OC_PL_AUTH_PARAMS.host);
+ setWebsite(R.string.pref_fakekey_ocnl_website, OCAuthParams.OC_NL_AUTH_PARAMS.host);
+ setWebsite(R.string.pref_fakekey_ocus_website, OCAuthParams.OC_US_AUTH_PARAMS.host);
+ setWebsite(R.string.pref_fakekey_ocro_website, OCAuthParams.OC_RO_AUTH_PARAMS.host);
setWebsite(R.string.pref_fakekey_ec_website, "extremcaching.com");
setWebsite(R.string.pref_fakekey_gcvote_website, "gcvote.com");
setWebsite(R.string.pref_fakekey_sendtocgeo_website, "send2.cgeo.org");
diff --git a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
index b813389..97332d3 100644
--- a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
@@ -9,16 +9,15 @@ import org.eclipse.jdt.annotation.Nullable;
public class TwitterAuthorizationActivity extends OAuthAuthorizationActivity {
- public TwitterAuthorizationActivity() {
- super("api.twitter.com",
- "/oauth/request_token",
- "/oauth/authorize",
- "/oauth/access_token",
- true,
- Settings.getKeyConsumerPublic(),
- Settings.getKeyConsumerSecret(),
- "callback://www.cgeo.org/twitter/");
- }
+ public static final OAuthParameters TWITTER_OAUTH_PARAMS = new OAuthParameters(
+ "api.twitter.com",
+ "/oauth/request_token",
+ "/oauth/authorize",
+ "/oauth/access_token",
+ true,
+ Settings.getKeyConsumerPublic(),
+ Settings.getKeyConsumerSecret(),
+ "callback://www.cgeo.org/twitter/");
@Override
protected final ImmutablePair<String, String> getTempTokens() {
diff --git a/main/src/cgeo/geocaching/utils/BundleUtils.java b/main/src/cgeo/geocaching/utils/BundleUtils.java
new file mode 100644
index 0000000..9c4255b
--- /dev/null
+++ b/main/src/cgeo/geocaching/utils/BundleUtils.java
@@ -0,0 +1,17 @@
+package cgeo.geocaching.utils;
+
+import org.eclipse.jdt.annotation.NonNull;
+
+import android.os.Bundle;
+
+public class BundleUtils {
+
+ @NonNull
+ public static String getString(Bundle bundle, @NonNull String key, @NonNull String defaultValue) {
+ String res = bundle.getString(key);
+ if (res != null) {
+ return res;
+ }
+ return defaultValue;
+ }
+}