From 21710f55f38f61e5f32a83914b978e3bea6dd261 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 7 Aug 2015 10:06:27 +0200 Subject: [PATCH] proxy image enclosures too (#750) --- .../com/commafeed/backend/feed/FeedUtils.java | 17 ++++++++++------- .../com/commafeed/frontend/model/Entry.java | 7 +++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/commafeed/backend/feed/FeedUtils.java b/src/main/java/com/commafeed/backend/feed/FeedUtils.java index 0999e85e..f6513ecf 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedUtils.java +++ b/src/main/java/com/commafeed/backend/feed/FeedUtils.java @@ -13,8 +13,6 @@ import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; -import lombok.extern.slf4j.Slf4j; - import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; @@ -40,6 +38,7 @@ import com.ibm.icu.text.CharsetMatch; import com.steadystate.css.parser.CSSOMParser; import edu.uci.ics.crawler4j.url.URLCanonicalizer; +import lombok.extern.slf4j.Slf4j; /** * Utility methods related to feed handling @@ -438,10 +437,7 @@ public class FeedUtils { return removeTrailingSlash(publicUrl) + "/rest/feed/favicon/" + subscription.getId(); } - public static String proxyImages(String content, String publicUrl, boolean proxyImages) { - if (!proxyImages) { - return content; - } + public static String proxyImages(String content, String publicUrl) { if (StringUtils.isBlank(content)) { return content; } @@ -451,7 +447,7 @@ public class FeedUtils { for (Element element : elements) { String href = element.attr("src"); if (href != null) { - String proxy = removeTrailingSlash(publicUrl) + "/rest/server/proxy?u=" + imageProxyEncoder(href); + String proxy = proxyImage(href, publicUrl); element.attr("src", proxy); } } @@ -459,6 +455,13 @@ public class FeedUtils { return doc.body().html(); } + public static String proxyImage(String url, String publicUrl) { + if (StringUtils.isBlank(url)) { + return url; + } + return removeTrailingSlash(publicUrl) + "/rest/server/proxy?u=" + imageProxyEncoder(url); + } + public static String rot13(String msg) { StringBuilder message = new StringBuilder(); diff --git a/src/main/java/com/commafeed/frontend/model/Entry.java b/src/main/java/com/commafeed/frontend/model/Entry.java index 5810f65a..0cf4fa64 100644 --- a/src/main/java/com/commafeed/frontend/model/Entry.java +++ b/src/main/java/com/commafeed/frontend/model/Entry.java @@ -6,6 +6,8 @@ import java.util.Date; import java.util.List; import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; + import com.commafeed.backend.feed.FeedUtils; import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntryContent; @@ -52,10 +54,11 @@ public class Entry implements Serializable { if (content != null) { entry.setRtl(FeedUtils.isRTL(feedEntry)); entry.setTitle(content.getTitle()); - entry.setContent(FeedUtils.proxyImages(content.getContent(), publicUrl, proxyImages)); + entry.setContent(proxyImages ? FeedUtils.proxyImages(content.getContent(), publicUrl) : content.getContent()); entry.setAuthor(content.getAuthor()); - entry.setEnclosureUrl(content.getEnclosureUrl()); entry.setEnclosureType(content.getEnclosureType()); + entry.setEnclosureUrl(proxyImages && StringUtils.contains(content.getEnclosureType(), "image") + ? FeedUtils.proxyImage(content.getEnclosureUrl(), publicUrl) : content.getEnclosureUrl()); entry.setCategories(content.getCategories()); }