From aeef16495f53b80e28399445c99cee3ad360dc6d Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 22 Nov 2025 18:55:29 +0800 Subject: [PATCH] :bug: Fix sitemap and rss still respond all types of posts --- DysonNetwork.Zone/SEO/RssController.cs | 30 +++++++++++----- DysonNetwork.Zone/SEO/SitemapController.cs | 41 +++++++++++----------- 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/DysonNetwork.Zone/SEO/RssController.cs b/DysonNetwork.Zone/SEO/RssController.cs index a5e51e4..fdd0829 100644 --- a/DysonNetwork.Zone/SEO/RssController.cs +++ b/DysonNetwork.Zone/SEO/RssController.cs @@ -9,7 +9,10 @@ using Microsoft.AspNetCore.Mvc; namespace DysonNetwork.Zone.SEO; [ApiController] -public class RssController(PostService.PostServiceClient postClient, MarkdownConverter markdownConverter) : ControllerBase +public class RssController( + PostService.PostServiceClient postClient, + MarkdownConverter markdownConverter +) : ControllerBase { [HttpGet("rss")] [Produces("application/rss+xml")] @@ -29,9 +32,11 @@ public class RssController(PostService.PostServiceClient postClient, MarkdownCon { OrderBy = "date", OrderDesc = true, - PageSize = 20 // Get top 20 recent posts + PageSize = 20, // Get top 20 recent posts }; + request.Types_.Add(Shared.Proto.PostType.Article); + var response = await postClient.ListPostsAsync(request); if (response?.Posts != null) @@ -43,15 +48,18 @@ public class RssController(PostService.PostServiceClient postClient, MarkdownCon var item = new SyndicationItem( post.Title, - post.Content is not null ? markdownConverter.ToHtml(post.Content!) : "No content", // Convert Markdown to HTML + post.Content is not null + ? markdownConverter.ToHtml(post.Content!) + : "No content", // Convert Markdown to HTML new Uri(postUrl), post.Id.ToString(), - post.EditedAt?.ToDateTimeOffset() ?? - post.PublishedAt?.ToDateTimeOffset() ?? post.CreatedAt.ToDateTimeOffset() + post.EditedAt?.ToDateTimeOffset() + ?? post.PublishedAt?.ToDateTimeOffset() + ?? post.CreatedAt.ToDateTimeOffset() ) { - PublishDate = post.PublishedAt?.ToDateTimeOffset() ?? - post.CreatedAt.ToDateTimeOffset() // Use CreatedAt for publish date + PublishDate = + post.PublishedAt?.ToDateTimeOffset() ?? post.CreatedAt.ToDateTimeOffset(), // Use CreatedAt for publish date }; items.Add(item); @@ -61,7 +69,10 @@ public class RssController(PostService.PostServiceClient postClient, MarkdownCon feed.Items = items; await using var sw = new StringWriter(); - await using var reader = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, Async = true }); + await using var reader = XmlWriter.Create( + sw, + new XmlWriterSettings { Indent = true, Async = true } + ); var formatter = new Rss20FeedFormatter(feed); formatter.WriteTo(reader); @@ -69,4 +80,5 @@ public class RssController(PostService.PostServiceClient postClient, MarkdownCon return Content(sw.ToString(), "application/rss+xml"); } -} \ No newline at end of file +} + diff --git a/DysonNetwork.Zone/SEO/SitemapController.cs b/DysonNetwork.Zone/SEO/SitemapController.cs index 8902b90..bc267da 100644 --- a/DysonNetwork.Zone/SEO/SitemapController.cs +++ b/DysonNetwork.Zone/SEO/SitemapController.cs @@ -7,10 +7,7 @@ using SimpleMvcSitemap; namespace DysonNetwork.Zone.SEO; [ApiController] -public class SitemapController( - AppDatabase db, - PostService.PostServiceClient postClient -) +public class SitemapController(AppDatabase db, PostService.PostServiceClient postClient) : ControllerBase { [HttpGet("sitemap.xml")] @@ -19,25 +16,26 @@ public class SitemapController( var nodes = new List { // Add static pages - new("/") - { ChangeFrequency = ChangeFrequency.Weekly, Priority = 1.0m }, - new("/about") - { ChangeFrequency = ChangeFrequency.Monthly, Priority = 0.8m }, - new("/posts") - { ChangeFrequency = ChangeFrequency.Daily, Priority = 0.9m } + new("/") { ChangeFrequency = ChangeFrequency.Weekly, Priority = 1.0m }, + new("/about") { ChangeFrequency = ChangeFrequency.Monthly, Priority = 0.8m }, + new("/posts") { ChangeFrequency = ChangeFrequency.Daily, Priority = 0.9m }, }; // Add dynamic posts var allPosts = await GetAllPosts(); - nodes.AddRange(allPosts.Select(post => - { - var uri = post.AsUrl(Request.Host.ToString(), Request.Scheme); - return new SitemapNode(uri) + nodes.AddRange( + allPosts.Select(post => { - LastModificationDate = post.EditedAt?.ToDateTimeUtc() ?? post.CreatedAt.ToDateTimeUtc(), - ChangeFrequency = ChangeFrequency.Monthly, Priority = 0.7m - }; - })); + var uri = post.AsUrl(Request.Host.ToString(), Request.Scheme); + return new SitemapNode(uri) + { + LastModificationDate = + post.EditedAt?.ToDateTimeUtc() ?? post.CreatedAt.ToDateTimeUtc(), + ChangeFrequency = ChangeFrequency.Monthly, + Priority = 0.7m, + }; + }) + ); return new SitemapProvider().CreateSitemap(new SitemapModel(nodes)); } @@ -55,9 +53,11 @@ public class SitemapController( OrderBy = "date", OrderDesc = true, PageSize = pageSize, - PageToken = pageToken ?? string.Empty + PageToken = pageToken ?? string.Empty, }; + request.Types_.Add(Shared.Proto.PostType.Article); + var response = await postClient.ListPostsAsync(request); if (response?.Posts != null) @@ -71,4 +71,5 @@ public class SitemapController( return allPosts; } -} \ No newline at end of file +} +