public static async Task <SyndicationFeed> BuildSyndication(this IBlogService service, string baseAddress) { ClientUrlGenerator generator = new ClientUrlGenerator { BaseAddress = baseAddress }; BlogOptions blogOptions = await service.GetOptions(); SyndicationFeed feed = new SyndicationFeed(blogOptions.Name, blogOptions.Description, new Uri(baseAddress)); SyndicationPerson author = new SyndicationPerson("", blogOptions.Onwer, baseAddress); feed.Authors.Add(author); Dictionary <string, SyndicationCategory> categoryMap = new Dictionary <string, SyndicationCategory>(); { /*var cates = await BlogService.CategoryService.GetCategories(await BlogService.CategoryService.All()); * foreach (var p in cates) * { * var cate = new SyndicationCategory(p.Name); * categoryMap.Add(p.Id, cate); * feed.Categories.Add(cate); * }*/ } { var posts = await service.PostService.GetPosts(await service.PostService.All()); List <SyndicationItem> items = new List <SyndicationItem>(); foreach (var p in posts) { if (p is null) { continue; } var s = new SyndicationItem(p.Title, SyndicationContent.CreateHtmlContent(Markdown.ToHtml(p.Content.Raw, Pipeline)), new Uri(generator.Post(p.Id)), p.Id, p.ModificationTime); s.Authors.Add(author); string summary; if (await service.PostService.Protector.IsProtected(p.Content)) { summary = "Protected Post"; } else { summary = Markdown.ToPlainText(p.Content.Raw, Pipeline); } s.Summary = SyndicationContent.CreatePlaintextContent(summary.Length <= 100 ? summary : summary.Substring(0, 100)); s.Categories.Add(new SyndicationCategory(p.Category.ToString())); /*if (categoryMap.TryGetValue(p.CategoryId, out var cate)) * s.Categories.Add(cate);*/ s.PublishDate = p.CreationTime; items.Add(s); } feed.Items = items.AsEnumerable(); } return(feed); }
public static async Task <SitemapBuilder> BuildSitemap(this IBlogService service, string baseAddress) { SitemapBuilder siteMapBuilder = new SitemapBuilder(); ClientUrlGenerator generator = new ClientUrlGenerator { BaseAddress = baseAddress }; siteMapBuilder.AddUrl(baseAddress); { siteMapBuilder.AddUrl(generator.Posts()); siteMapBuilder.AddUrl(generator.Articles()); siteMapBuilder.AddUrl(generator.Slides()); siteMapBuilder.AddUrl(generator.Notes()); var posts = await service.PostService.All(); foreach (var id in posts) { siteMapBuilder.AddUrl(generator.Post(id)); } } /*{ * var keywords = await BlogService.KeywordService.All(); * siteMapBuilder.AddUrl($"{BaseAddress}/keywords"); * foreach (var id in keywords) * { * siteMapBuilder.AddUrl($"{BaseAddress}/keywords/{id}"); * } * }; * { * var categories = await BlogService.CategoryService.All(); * siteMapBuilder.AddUrl($"{BaseAddress}/categories"); * foreach (var id in categories) * { * siteMapBuilder.AddUrl($"{BaseAddress}/categories/{id}"); * } * };*/ return(siteMapBuilder); }