Skip to content

【bug】rss信息的Item对象中,link属性externalUrl重复 #20

@hllshiro

Description

@hllshiro

Hi~下面是请求的结果,可以看到,Item的link属性,externalUrl重复出现

<rss version="2.0">
    <channel>
        <title>note</title>
        <link>https://halo.xxx.cn:9443/</link>
        <description>note</description>
        <item>
            <title>
                <![CDATA[ Hello Halo ]]>
            </title>
            <link>https://halo.xxx.cn:9443/https://halo.xxx.cn:9443/archives/hello-halo</link>
            <description>
                <![CDATA[ 如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Halo 进行创作,希望能够使用愉快。 ]]>
            </description>
            <guid>/archives/hello-halo</guid>
            <pubDate>Sat, 7 Oct 2023 03:19:04 GMT</pubDate>
        </item>
    </channel>
</rss>

查看了生成Item的代码,发现在判断permalinkUri不是绝对路径后,通过externalUrl重新解析permalinkUri来生成绝对路径url。但是在itemBuilder中再次拼接了externalUrl

private Mono<ServerResponse> postListResultToXmlServerResponse(
        Mono<ListResult<Post>> postListResult,
        FeedContext feedContext, RSS2 rss2) {
        return postListResult
            .flatMapIterable(ListResult::getItems)
            .flatMap(post -> {
                // Create item
                var permalink = post.getStatusOrDefault().getPermalink();
                if (permalink != null) {
                    var permalinkUri = URI.create(permalink);
                    if (!permalinkUri.isAbsolute()) {
                        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())
                    // 此处再次拼接了服务器externalUrl
                    .link(feedContext.externalUrl.toString() + permalink)
                    .pubDate(post.getSpec().getPublishTime())
                    .guid(post.getStatusOrDefault().getPermalink());

                // TODO lastBuildDate need upgrade halo dependency version

                // Set description
    }

/kind bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions