diff --git a/build.gradle b/build.gradle index 3ec52e6..a715afc 100644 --- a/build.gradle +++ b/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation 'org.dom4j:dom4j:2.1.3' implementation 'org.apache.commons:commons-text:1.10.0' - implementation platform('run.halo.tools.platform:plugin:2.5.0-SNAPSHOT') + implementation platform('run.halo.tools.platform:plugin:2.9.0-SNAPSHOT') compileOnly 'run.halo.app:api' testImplementation 'run.halo.app:api' diff --git a/src/main/java/run/halo/feed/FeedServiceImpl.java b/src/main/java/run/halo/feed/FeedServiceImpl.java index 9571fd6..2907e2d 100644 --- a/src/main/java/run/halo/feed/FeedServiceImpl.java +++ b/src/main/java/run/halo/feed/FeedServiceImpl.java @@ -19,6 +19,8 @@ import run.halo.app.infra.SystemSetting; import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.Objects; @Service @@ -135,9 +137,9 @@ private Mono getFeedContext(ServerRequest request) { Assert.notNull(basicPluginSetting.getDescriptionType(), "descriptionType cannot be null"); - var externalUrl = externalUrlSupplier.get(); - if (!externalUrl.isAbsolute()) { - externalUrl = request.exchange().getRequest().getURI().resolve(externalUrl); + var externalUrl = externalUrlSupplier.getRaw(); + if (externalUrl == null) { + externalUrl = externalUrlSupplier.getURL(request.exchange().getRequest()); } // Build feed context return new FeedContext(basicPluginSetting, systemBasicSetting, externalUrl); @@ -155,13 +157,17 @@ private Mono postListResultToXmlServerResponse( if (permalink != null) { var permalinkUri = URI.create(permalink); if (!permalinkUri.isAbsolute()) { - permalinkUri = feedContext.externalUrl.resolve(permalinkUri); + try { + permalinkUri = feedContext.externalUrl.toURI().resolve(permalinkUri); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } } permalink = permalinkUri.toString(); } var itemBuilder = RSS2.Item.builder() .title(post.getSpec().getTitle()) - .link(permalink) + .link(feedContext.externalUrl.toString() + permalink) .pubDate(post.getSpec().getPublishTime()) .guid(post.getStatusOrDefault().getPermalink()); @@ -207,6 +213,6 @@ private RSS2 buildBaseRss(FeedContext feedContext) { } record FeedContext(BasicSetting basicPluginSetting, SystemSetting.Basic systemBasicSetting, - URI externalUrl) { + URL externalUrl) { } } diff --git a/src/main/resources/plugin.yaml b/src/main/resources/plugin.yaml index 79ba8f5..7d9b334 100644 --- a/src/main/resources/plugin.yaml +++ b/src/main/resources/plugin.yaml @@ -9,7 +9,7 @@ metadata: spec: enabled: true version: 1.1.1 - requires: ">=2.4.0" + requires: ">=2.7.0" author: name: Halo OSS Team website: https://github.com/halo-dev