diff --git a/app/src/main/java/run/halo/feed/RelativeLinkProcessor.java b/app/src/main/java/run/halo/feed/RelativeLinkProcessor.java index 9a79305..9352c0d 100644 --- a/app/src/main/java/run/halo/feed/RelativeLinkProcessor.java +++ b/app/src/main/java/run/halo/feed/RelativeLinkProcessor.java @@ -1,6 +1,9 @@ package run.halo.feed; +import static run.halo.feed.RssUtils.genRelativeThumbUri; + import com.google.common.base.Throwables; +import java.net.URI; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jsoup.Jsoup; @@ -8,14 +11,10 @@ import org.jsoup.select.Elements; import org.springframework.util.Assert; import org.springframework.web.util.UriComponentsBuilder; -import org.springframework.web.util.UriUtils; import run.halo.app.core.attachment.ThumbnailSize; import run.halo.app.infra.utils.PathUtils; import run.halo.feed.telemetry.TelemetryEndpoint; -import java.net.URI; -import java.nio.charset.StandardCharsets; - @Slf4j public class RelativeLinkProcessor { private final URI externalUri; @@ -66,8 +65,6 @@ private String doProcessForHtml(String html) { processElementAttr(embeds, "src", false); return document.body().html(); -// var outputHtml = document.body().html(); -// return StringEscapeUtils.unescapeHtml4(outputHtml); } private void processElementAttr(Elements elements, String attrKey, boolean canThumb) { @@ -89,10 +86,7 @@ boolean isNotTelemetryLink(String uri) { } private String genThumbUrl(String url, ThumbnailSize size) { - return processLink("/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=" - + UriUtils.encode(url, StandardCharsets.UTF_8) - + "&size=" + size.name().toLowerCase() - ); + return processLink(genRelativeThumbUri(url, size)); } private String processLink(String link) { @@ -101,7 +95,7 @@ private String processLink(String link) { } var contextPath = StringUtils.defaultIfBlank(externalUri.getPath(), "/"); var linkUri = UriComponentsBuilder.fromUriString(URI.create(link).toASCIIString()) - .build(true); + .build(true); var builder = UriComponentsBuilder.fromUriString(externalUri.toString()); if (shouldAppendPath(contextPath, link)) { builder.pathSegment(linkUri.getPathSegments().toArray(new String[0])); @@ -109,10 +103,10 @@ private String processLink(String link) { builder.replacePath(linkUri.getPath()); } return builder.query(linkUri.getQuery()) - .fragment(linkUri.getFragment()) - .build(true) - .toUri() - .toString(); + .fragment(linkUri.getFragment()) + .build(true) + .toUri() + .toString(); } private static boolean shouldAppendPath(String contextPath, String link) { diff --git a/app/src/main/java/run/halo/feed/RssUtils.java b/app/src/main/java/run/halo/feed/RssUtils.java new file mode 100644 index 0000000..fa7a9d5 --- /dev/null +++ b/app/src/main/java/run/halo/feed/RssUtils.java @@ -0,0 +1,16 @@ +package run.halo.feed; + +import java.nio.charset.StandardCharsets; +import lombok.experimental.UtilityClass; +import org.springframework.web.util.UriUtils; +import run.halo.app.core.attachment.ThumbnailSize; + +@UtilityClass +public class RssUtils { + + public static String genRelativeThumbUri(String url, ThumbnailSize size) { + return "/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=" + + UriUtils.encode(url, StandardCharsets.UTF_8) + + "&size=" + size.name().toLowerCase(); + } +} diff --git a/app/src/main/java/run/halo/feed/provider/AbstractPostRssProvider.java b/app/src/main/java/run/halo/feed/provider/AbstractPostRssProvider.java index cb9a5f8..79698f2 100644 --- a/app/src/main/java/run/halo/feed/provider/AbstractPostRssProvider.java +++ b/app/src/main/java/run/halo/feed/provider/AbstractPostRssProvider.java @@ -1,5 +1,7 @@ package run.halo.feed.provider; +import static run.halo.feed.RssUtils.genRelativeThumbUri; + import java.util.List; import java.util.function.Function; import lombok.Data; @@ -91,10 +93,7 @@ public Mono handler(ServerRequest request) { } private String genThumbUrl(String url) { - return externalLinkProcessor.processLink( - "/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=" + url + "&size=" - + ThumbnailSize.M.name().toLowerCase() - ); + return externalLinkProcessor.processLink(genRelativeThumbUri(url, ThumbnailSize.M)); } protected Flux listPosts(ServerRequest request) {