aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/gc/GCParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector/gc/GCParser.java')
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java19
1 files changed, 7 insertions, 12 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index e32f72d..7dc048a 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -78,20 +78,15 @@ public abstract class GCParser {
searchResult.viewstates = Login.getViewstates(page);
// recaptcha
- String recaptchaChallenge = null;
if (showCaptcha) {
final String recaptchaJsParam = TextUtils.getMatch(page, GCConstants.PATTERN_SEARCH_RECAPTCHA, false, null);
if (recaptchaJsParam != null) {
- final Parameters params = new Parameters("k", recaptchaJsParam.trim());
- final String recaptchaJs = Network.getResponseData(Network.getRequest("http://www.google.com/recaptcha/api/challenge", params));
+ thread.setKey(recaptchaJsParam.trim());
- if (StringUtils.isNotBlank(recaptchaJs)) {
- recaptchaChallenge = TextUtils.getMatch(recaptchaJs, GCConstants.PATTERN_SEARCH_RECAPTCHACHALLENGE, true, 1, null, true);
- }
+ thread.fetchChallenge();
}
- if (thread != null && StringUtils.isNotBlank(recaptchaChallenge)) {
- thread.setChallenge(recaptchaChallenge);
+ if (thread != null && StringUtils.isNotBlank(thread.getChallenge())) {
thread.notifyNeed();
}
}
@@ -276,7 +271,7 @@ public abstract class GCParser {
}
String recaptchaText = null;
- if (thread != null && recaptchaChallenge != null) {
+ if (thread != null && StringUtils.isNotBlank(thread.getChallenge())) {
if (thread.getText() == null) {
thread.waitForUser();
}
@@ -284,7 +279,7 @@ public abstract class GCParser {
recaptchaText = thread.getText();
}
- if (!cids.isEmpty() && (Settings.isPremiumMember() || showCaptcha) && (recaptchaChallenge == null || StringUtils.isNotBlank(recaptchaText))) {
+ if (!cids.isEmpty() && (Settings.isPremiumMember() || showCaptcha) && ((thread == null || StringUtils.isBlank(thread.getChallenge())) || StringUtils.isNotBlank(recaptchaText))) {
Log.i("Trying to get .loc for " + cids.size() + " caches");
try {
@@ -305,8 +300,8 @@ public abstract class GCParser {
params.put("CID", cid);
}
- if (recaptchaChallenge != null && StringUtils.isNotBlank(recaptchaText)) {
- params.put("recaptcha_challenge_field", recaptchaChallenge);
+ if (thread != null && StringUtils.isNotBlank(thread.getChallenge()) && StringUtils.isNotBlank(recaptchaText)) {
+ params.put("recaptcha_challenge_field", thread.getChallenge());
params.put("recaptcha_response_field", recaptchaText);
}
params.put("ctl00$ContentBody$uxDownloadLoc", "Download Waypoints");