diff options
author | rsudev <rasch@munin-soft.de> | 2014-04-07 22:27:55 +0200 |
---|---|---|
committer | rsudev <rasch@munin-soft.de> | 2014-04-07 22:27:55 +0200 |
commit | 0c407b7982e9f018853812731d69dc90f32358a2 (patch) | |
tree | c09d1baef168392afd2a90cd53b31dd3943cf8bd | |
parent | 3958777a5cf254ac2bfbb5cb569cfbd42abfb49f (diff) | |
download | cgeo-0c407b7982e9f018853812731d69dc90f32358a2.zip cgeo-0c407b7982e9f018853812731d69dc90f32358a2.tar.gz cgeo-0c407b7982e9f018853812731d69dc90f32358a2.tar.bz2 |
Refactoring opencaching implementation
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; + } +} |