diff --git a/engine/src/main/java/org/archive/crawler/restlet/BaseResource.java b/engine/src/main/java/org/archive/crawler/restlet/BaseResource.java index 846df9e2..14c004ba 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/BaseResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/BaseResource.java @@ -19,6 +19,8 @@ package org.archive.crawler.restlet; +import java.util.List; + import org.restlet.Context; import org.restlet.data.MediaType; import org.restlet.data.Preference; @@ -44,13 +46,25 @@ public abstract class BaseResource extends Resource { * {@link https://webarchive.jira.com/browse/HER-1603} */ public Variant getPreferredVariant() { + boolean addExplicitTextHtmlPreference = false; + for (Preference mediaTypePreference: getRequest().getClientInfo().getAcceptedMediaTypes()) { if (mediaTypePreference.getMetadata().equals(MediaType.TEXT_HTML)) { mediaTypePreference.setQuality(Float.MAX_VALUE); + addExplicitTextHtmlPreference = false; break; + } else if (mediaTypePreference.getMetadata().includes(MediaType.TEXT_HTML)) { + addExplicitTextHtmlPreference = true; } } + if (addExplicitTextHtmlPreference) { + List> acceptedMediaTypes = getRequest().getClientInfo().getAcceptedMediaTypes(); + acceptedMediaTypes.add(new Preference(MediaType.TEXT_HTML, Float.MAX_VALUE)); + getRequest().getClientInfo().setAcceptedMediaTypes(acceptedMediaTypes); + } + + return super.getPreferredVariant(); } }