Skip to content

Commit 88e09e4

Browse files
committed
add better error management for AntiCaptcha
1 parent c218982 commit 88e09e4

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

KinanCity-captcha-AntiCaptcha/src/main/java/com/kinancity/core/captcha/antiCaptcha/AntiCaptchaProvider.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public void run() {
140140
ErrorCode errorCode = ErrorCode.valueOf(response.getErrorCode());
141141
logger.error("Captcha Provider Error {}", response.getErrorCode());
142142

143-
if (errorCode == ErrorCode.ERROR_ZERO_BALANCE) {
143+
if (ErrorCode.ERROR_ZERO_BALANCE.equals(errorCode)) {
144144
if (stopOnInsufficientBalance) {
145145
logger.error("STOP");
146146
this.runFlag = false;
@@ -153,10 +153,28 @@ public void run() {
153153
// Interrupted
154154
}
155155
}
156+
}else if (ErrorCode.ERROR_NO_SLOT_AVAILABLE.equals(errorCode)){
157+
// No slots, wait for a bit
158+
logger.warn("NO_SLOT_AVAILABLE, Wait for a bit");
159+
try {
160+
Thread.sleep(30000);
161+
} catch (InterruptedException e1) {
162+
// Interrupted
163+
}
164+
}else if (ErrorCode.ERROR_NO_SUCH_CAPCHA_ID.equals(errorCode)){
165+
logger.warn("ERROR_NO_SUCH_CAPCHA_ID : {}", captchaId);
166+
challenges.remove(challenge);
167+
}else if (ErrorCode.ERROR_CAPTCHA_UNSOLVABLE.equals(errorCode)){
168+
logger.warn("ERROR_CAPTCHA_UNSOLVABLE : {}", captchaId);
169+
challenges.remove(challenge);
170+
} else if (ErrorCode.ERROR_CAPTCHA_UNSOLVABLE.equals(errorCode)){
171+
logger.warn("OTHER ERROR with code {}", errorCode);
172+
// challenges.remove(challenge);
156173
}
157174

158175
} catch (IllegalArgumentException e) {
159176
logger.error("Unknown Captcha Provider Error Code : {}", response.getErrorCode());
177+
challenges.remove(challenge);
160178
}
161179
} else {
162180
// NO ERROR

KinanCity-captcha-ImageTypers/src/main/java/com/kinancity/core/captcha/imageTypers/ImageTypersProvider.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,18 @@ public double getBalance() throws ImageTypersConfigurationException {
210210
try {
211211
Request sendRequest = buildBalanceCheckequestGet();
212212
Response sendResponse = captchaClient.newCall(sendRequest).execute();
213-
String balance = sendResponse.body().string();
214-
return Double.valueOf(balance.replaceAll("\\$", ""));
215-
} catch (Exception e) {
213+
214+
String body = sendResponse.body().string();
215+
if(body.contains("ERROR")){
216+
if(body.contains("AUTHENTICATION_FAILED")){
217+
throw new ImageTypersConfigurationException("Authentication failed, captcha key might be bad");
218+
}else{
219+
throw new ImageTypersConfigurationException(body);
220+
}
221+
}
222+
223+
return Double.valueOf(body.replaceAll("\\$", ""));
224+
} catch (IOException e) {
216225
throw new ImageTypersConfigurationException("Error getting account balance", e);
217226
}
218227
}

0 commit comments

Comments
 (0)