diff options
| author | rsudev <rasch@munin-soft.de> | 2013-07-25 11:41:13 +0200 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2013-07-25 11:41:13 +0200 |
| commit | 8be80d1ba64788720a9ac325e072459b7ace4216 (patch) | |
| tree | 4c5ea29718649d4b56ef9a63cc8a3e37e73484a5 /main/src/cgeo/geocaching/loaders | |
| parent | bc4f10436c1528884749cca99bb8d5c9290c5e34 (diff) | |
| download | cgeo-8be80d1ba64788720a9ac325e072459b7ace4216.zip cgeo-8be80d1ba64788720a9ac325e072459b7ace4216.tar.gz cgeo-8be80d1ba64788720a9ac325e072459b7ace4216.tar.bz2 | |
Implements #17, Reload reCAPTCHA
Took layout and ideas raised by @culmor30
Moved reCAPTCHA key and challenge retrieval to the RecaptchaReceiver
Diffstat (limited to 'main/src/cgeo/geocaching/loaders')
| -rw-r--r-- | main/src/cgeo/geocaching/loaders/AbstractSearchLoader.java | 30 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/loaders/RecaptchaReceiver.java | 6 |
2 files changed, 33 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/loaders/AbstractSearchLoader.java b/main/src/cgeo/geocaching/loaders/AbstractSearchLoader.java index ece5c2f..ebf29d1 100644 --- a/main/src/cgeo/geocaching/loaders/AbstractSearchLoader.java +++ b/main/src/cgeo/geocaching/loaders/AbstractSearchLoader.java @@ -1,7 +1,13 @@ package cgeo.geocaching.loaders; import cgeo.geocaching.SearchResult; +import cgeo.geocaching.connector.gc.GCConstants; +import cgeo.geocaching.network.Network; +import cgeo.geocaching.network.Parameters; import cgeo.geocaching.utils.Log; +import cgeo.geocaching.utils.TextUtils; + +import org.apache.commons.lang3.StringUtils; import android.content.Context; import android.os.Handler; @@ -25,6 +31,7 @@ public abstract class AbstractSearchLoader extends AsyncTaskLoader<SearchResult> private Handler recaptchaHandler = null; private String recaptchaChallenge = null; + private String recaptchaKey = null; private String recaptchaText = null; private SearchResult search; private boolean loading; @@ -90,8 +97,27 @@ public abstract class AbstractSearchLoader extends AsyncTaskLoader<SearchResult> } @Override - public void setChallenge(String challenge) { - recaptchaChallenge = challenge; + public void setKey(String key) { + recaptchaKey = key; + } + + @Override + public String getKey() { + return recaptchaKey; + } + + @Override + public void fetchChallenge() { + recaptchaChallenge = null; + + if (StringUtils.isNotEmpty(recaptchaKey)) { + final Parameters params = new Parameters("k", getKey()); + final String recaptchaJs = Network.getResponseData(Network.getRequest("http://www.google.com/recaptcha/api/challenge", params)); + + if (StringUtils.isNotBlank(recaptchaJs)) { + recaptchaChallenge = TextUtils.getMatch(recaptchaJs, GCConstants.PATTERN_SEARCH_RECAPTCHACHALLENGE, true, 1, null, true); + } + } } @Override diff --git a/main/src/cgeo/geocaching/loaders/RecaptchaReceiver.java b/main/src/cgeo/geocaching/loaders/RecaptchaReceiver.java index f64bf89..fd5189c 100644 --- a/main/src/cgeo/geocaching/loaders/RecaptchaReceiver.java +++ b/main/src/cgeo/geocaching/loaders/RecaptchaReceiver.java @@ -8,7 +8,11 @@ public interface RecaptchaReceiver { public String getChallenge(); - public void setChallenge(String challenge); + public void fetchChallenge(); + + public String getKey(); + + public void setKey(String key); public void notifyNeed(); |
