From ad329ceea8a31d4214e4af1adf8c490946dbcbb4 Mon Sep 17 00:00:00 2001 From: Hunter Stern Date: Thu, 17 Dec 2015 10:40:57 -0800 Subject: [PATCH] Save enctype of form in submission curi --- .../java/org/archive/modules/CoreAttributeConstants.java | 3 +++ .../java/org/archive/modules/fetcher/FetchHTTPRequest.java | 7 ++----- .../java/org/archive/modules/forms/FormLoginProcessor.java | 5 +++++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/src/main/java/org/archive/modules/CoreAttributeConstants.java b/modules/src/main/java/org/archive/modules/CoreAttributeConstants.java index f0579b61..a86a0854 100644 --- a/modules/src/main/java/org/archive/modules/CoreAttributeConstants.java +++ b/modules/src/main/java/org/archive/modules/CoreAttributeConstants.java @@ -122,6 +122,9 @@ public interface CoreAttributeConstants { // FORMS support - a persistent member (survives frontier enqueue/dequeue/retries) public static final String A_SUBMIT_DATA = "submit-data"; + //the encoding type of the form + public static final String A_SUBMIT_DATA_ENCTYPE = "submit-data-enctype"; + // arbitrary additions to WARC response record headers public static final String A_WARC_RESPONSE_HEADERS = "warc-response-headers"; diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java index c0a59a59..3d5101f3 100644 --- a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java +++ b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java @@ -189,11 +189,8 @@ class FetchHTTPRequest { this.request = postRequest; String submitData = (String) curi.getData().get(CoreAttributeConstants.A_SUBMIT_DATA); if (submitData != null) { - if (curi.getDataList(ExtractorHTMLForms.A_HTML_FORM_OBJECTS) != null - && "multipart/form-data" - .equals(((HTMLForm) curi.getDataList( - ExtractorHTMLForms.A_HTML_FORM_OBJECTS).get(0)) - .getEnctype())) { + if ("multipart/form-data".equals(curi.getData().get( + CoreAttributeConstants.A_SUBMIT_DATA_ENCTYPE))) { HttpEntity multipartFormEntity = MultipartEntityBuilder .create() .addTextBody("submitData", submitData, diff --git a/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java b/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java index 9a2d540d..1307cb75 100644 --- a/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java +++ b/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java @@ -270,6 +270,11 @@ public class FormLoginProcessor extends Processor implements Checkpointable { templateForm.asFormDataString( getLoginUsername(), getLoginPassword())); + submitCuri.getData().put( + CoreAttributeConstants.A_SUBMIT_DATA_ENCTYPE, + ((HTMLForm) curi.getDataList( + ExtractorHTMLForms.A_HTML_FORM_OBJECTS).get(0)) + .getEnctype()); submitCuri.setSchedulingDirective(SchedulingConstants.HIGH); submitCuri.setForceFetch(true); curi.getOutLinks().add(submitCuri);