mirror of
https://github.com/internetarchive/heritrix3.git
synced 2026-09-24 14:45:56 +00:00
More changes for https://webarchive.jira.com/browse/ARI-4656
This commit is contained in:
committed by
Noah Levitt
parent
4997014b34
commit
93bca3d55c
@@ -27,6 +27,7 @@ import org.apache.commons.httpclient.NameValuePair;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.entity.mime.HttpMultipartMode;
|
||||
import org.apache.http.entity.mime.MultipartEntityBuilder;
|
||||
import org.apache.http.entity.mime.content.StringBody;
|
||||
import org.archive.util.TextUtils;
|
||||
@@ -71,10 +72,16 @@ public class HTMLForm {
|
||||
public void addField(String type, String name, String value, boolean checked) {
|
||||
FormInput input = new FormInput();
|
||||
input.type = type;
|
||||
|
||||
if (isMultipleFormSubmitInputs(type)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// default input type is text per html standard
|
||||
if (input.type == null) {
|
||||
input.type = "text";
|
||||
}
|
||||
|
||||
input.name = name;
|
||||
input.value = value;
|
||||
allInputs.add(input);
|
||||
@@ -96,6 +103,18 @@ public class HTMLForm {
|
||||
public void addField(String type, String name, String value) {
|
||||
addField(type, name, value, false);
|
||||
}
|
||||
|
||||
public boolean isMultipleFormSubmitInputs(String type) {
|
||||
if (!type.toLowerCase().equals("submit")) return false;
|
||||
|
||||
for (FormInput input : allInputs) {
|
||||
if (input.type.toLowerCase().equals("submit")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
@@ -166,30 +185,33 @@ public class HTMLForm {
|
||||
}
|
||||
return data.toArray(new NameValuePair[data.size()]);
|
||||
}
|
||||
|
||||
public FormInput getLoginInputFromCandidates() {
|
||||
if (candidateUsernameInputs == null) return null;
|
||||
|
||||
if (candidateUsernameInputs.size() == 1) return candidateUsernameInputs.get(0);
|
||||
|
||||
for (FormInput input : candidateUsernameInputs) {
|
||||
|
||||
if (input.name != null && input.name.toLowerCase().indexOf("login") != -1) {
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public HttpEntity asFormDataMultiPartEntity(String username, String password) {
|
||||
//List<String> nameVals = new LinkedList<String>();
|
||||
MultipartEntityBuilder multiPartEntityBuilder = MultipartEntityBuilder.create();
|
||||
multiPartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
|
||||
|
||||
for (FormInput input : allInputs) {
|
||||
if ("dnn$ctr577$AACC_Login$txtFirstName".equals(input.name)
|
||||
|| "dnn$ctr577$AACC_Login$txtLastName".equals(input.name)
|
||||
|| "dnn$ctr577$AACC_Login$cmdContinue".equals(input.name)
|
||||
|| "dnn$ctr577$AACC_Login$txtEmailId".equals(input.name)
|
||||
|| "dnn$ctr577$AACC_Login$ctlCaptcha".equals(input.name)) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(input == candidateUsernameInputs.get(0)) {
|
||||
multiPartEntityBuilder.addPart(TextUtils.urlEscape(input.name), new StringBody(TextUtils.urlEscape(username), ContentType.MULTIPART_FORM_DATA));
|
||||
//nameVals.add(TextUtils.urlEscape(input.name) + "=" + TextUtils.urlEscape(username));
|
||||
if(input == getLoginInputFromCandidates()) {
|
||||
multiPartEntityBuilder.addPart(input.name, new StringBody(username, ContentType.MULTIPART_FORM_DATA));
|
||||
} else if(input == candidatePasswordInputs.get(0)) {
|
||||
multiPartEntityBuilder.addPart(TextUtils.urlEscape(input.name), new StringBody(TextUtils.urlEscape(password), ContentType.MULTIPART_FORM_DATA));
|
||||
//nameVals.add(TextUtils.urlEscape(input.name) + "=" + TextUtils.urlEscape(password));
|
||||
multiPartEntityBuilder.addPart(input.name, new StringBody(password, ContentType.MULTIPART_FORM_DATA));
|
||||
} else if (StringUtils.isNotEmpty(input.name)) {
|
||||
multiPartEntityBuilder.addPart(TextUtils.urlEscape(input.name), new StringBody(TextUtils.urlEscape(StringUtils.isNotEmpty(input.value) ? input.value : ""), ContentType.MULTIPART_FORM_DATA));
|
||||
//nameVals.add(TextUtils.urlEscape(input.name) + "=" + TextUtils.urlEscape(input.value));
|
||||
multiPartEntityBuilder.addPart(input.name, new StringBody(StringUtils.isNotEmpty(input.value) ? input.value : "", ContentType.MULTIPART_FORM_DATA));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user