package com.alkor.vph.captcha; import org.apache.commons.io.IOUtils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Calendar; /** * Author: akorobitsyn * Date: 03.07.13 * Time: 14:33 */ public class AntigateCaptchaParser implements CaptchaParser { private static final String notParsedCaptchaFileNameTemplate = "not-parsed-captcha-%d.jpg"; private final AntiGate antiGate; private int parseTryCount = 3; private String notParsedCaptchaPath = ""; public static CaptchaParser createInstance(String key) { return new AntigateCaptchaParser(key); } public int getParseTryCount() { return parseTryCount; } public void setParseTryCount(int parseTryCount) { this.parseTryCount = parseTryCount; } public String getNotParsedCaptchaPath() { return notParsedCaptchaPath; } public void setNotParsedCaptchaPath(String notParsedCaptchaPath) { this.notParsedCaptchaPath = notParsedCaptchaPath; } @Override public String parseCaptcha(String captchaUrl) throws IOException { URL url = new URL(captchaUrl); for (int i = 0; i < parseTryCount; i++) { InputStream is = url.openStream(); byte[] bytes = IOUtils.toByteArray(is); is.close(); String text = antiGate.getText(bytes); if (text != "") { return text; } else { File file = new File(notParsedCaptchaPath, String.format(notParsedCaptchaFileNameTemplate, Calendar.getInstance().getTime().getTime())); FileOutputStream fileOutputStream = new FileOutputStream(file); IOUtils.write(bytes, fileOutputStream); fileOutputStream.close(); } } return null; } private AntigateCaptchaParser(String key) { antiGate = new AntiGate(); antiGate.setKey(key); } }