From 29e8b0530871cfc7cc51a6fbf1852c308b40abe8 Mon Sep 17 00:00:00 2001 From: nlevitt Date: Fri, 4 Dec 2009 23:09:24 +0000 Subject: [PATCH] Improvement to [HER-1603?focusedCommentId=22557] fix * BaseResource.java getPreferredVariant(): always prefer HTML if anything in the header indicates it's acceptable (even "*/*" with low q-preference) --- .../org/archive/crawler/restlet/BaseResource.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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(); } }