aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/loaders
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-07-25 11:41:13 +0200
committerrsudev <rasch@munin-soft.de>2013-07-25 11:41:13 +0200
commit8be80d1ba64788720a9ac325e072459b7ace4216 (patch)
tree4c5ea29718649d4b56ef9a63cc8a3e37e73484a5 /main/src/cgeo/geocaching/loaders
parentbc4f10436c1528884749cca99bb8d5c9290c5e34 (diff)
downloadcgeo-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.java30
-rw-r--r--main/src/cgeo/geocaching/loaders/RecaptchaReceiver.java6
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();