in src/plugin/protocol-httpclient/src/java/org/apache/nutch/protocol/httpclient/Http.java [394:488]
private static HttpFormAuthConfigurer readFormAuthConfigurer(
Element credElement, String authMethod) {
if ("formAuth".equals(authMethod)) {
HttpFormAuthConfigurer formConfigurer = new HttpFormAuthConfigurer();
String str = credElement.getAttribute("loginUrl");
if (StringUtils.isNotBlank(str)) {
formConfigurer.setLoginUrl(str.trim());
} else {
throw new IllegalArgumentException("Must set loginUrl.");
}
str = credElement.getAttribute("loginFormId");
if (StringUtils.isNotBlank(str)) {
formConfigurer.setLoginFormId(str.trim());
} else {
throw new IllegalArgumentException("Must set loginFormId.");
}
str = credElement.getAttribute("loginRedirect");
if (StringUtils.isNotBlank(str)) {
formConfigurer.setLoginRedirect(Boolean.parseBoolean(str));
}
NodeList nodeList = credElement.getChildNodes();
for (int j = 0; j < nodeList.getLength(); j++) {
Node node = nodeList.item(j);
if (!(node instanceof Element))
continue;
Element element = (Element) node;
if ("loginPostData".equals(element.getTagName())) {
Map<String, String> loginPostData = new HashMap<String, String>();
NodeList childNodes = element.getChildNodes();
for (int k = 0; k < childNodes.getLength(); k++) {
Node fieldNode = childNodes.item(k);
if (!(fieldNode instanceof Element))
continue;
Element fieldElement = (Element) fieldNode;
String name = fieldElement.getAttribute("name");
String value = fieldElement.getAttribute("value");
loginPostData.put(name, value);
}
formConfigurer.setLoginPostData(loginPostData);
} else if ("additionalPostHeaders".equals(element.getTagName())) {
Map<String, String> additionalPostHeaders = new HashMap<String, String>();
NodeList childNodes = element.getChildNodes();
for (int k = 0; k < childNodes.getLength(); k++) {
Node fieldNode = childNodes.item(k);
if (!(fieldNode instanceof Element))
continue;
Element fieldElement = (Element) fieldNode;
String name = fieldElement.getAttribute("name");
String value = fieldElement.getAttribute("value");
additionalPostHeaders.put(name, value);
}
formConfigurer.setAdditionalPostHeaders(additionalPostHeaders);
} else if ("removedFormFields".equals(element.getTagName())) {
Set<String> removedFormFields = new HashSet<String>();
NodeList childNodes = element.getChildNodes();
for (int k = 0; k < childNodes.getLength(); k++) {
Node fieldNode = childNodes.item(k);
if (!(fieldNode instanceof Element))
continue;
Element fieldElement = (Element) fieldNode;
String name = fieldElement.getAttribute("name");
removedFormFields.add(name);
}
formConfigurer.setRemovedFormFields(removedFormFields);
} else if ("loginCookie".equals(element.getTagName())) {
// NUTCH-2280
LOG.debug("start loginCookie");
NodeList childNodes = element.getChildNodes();
for (int k = 0; k < childNodes.getLength(); k++) {
Node fieldNode = childNodes.item(k);
if (!(fieldNode instanceof Element))
continue;
Element fieldElement = (Element) fieldNode;
if ("policy".equals(fieldElement.getTagName())) {
String policy = fieldElement.getTextContent();
formConfigurer.setCookiePolicy(policy);
LOG.debug("cookie policy is " + policy);
}
}
}
}
return formConfigurer;
} else {
throw new IllegalArgumentException(
"Unsupported authMethod: " + authMethod);
}
}