private async Task <ISyndicationFeedWriter> GetWriter(string type, XmlWriter xmlWriter, DateTime updated) { string host = Request.Scheme + "://" + Request.Host + "/"; if (type.Equals("rss", StringComparison.OrdinalIgnoreCase)) { var rss = new RssFeedWriter(xmlWriter); await rss.WriteTitle(_settings.Value.Name); await rss.WriteDescription(_settings.Value.Description); await rss.WriteGenerator("Miniblog.Core"); await rss.WriteValue("link", host); return(rss); } var atom = new AtomFeedWriter(xmlWriter); await atom.WriteTitle(_settings.Value.Name); await atom.WriteId(host); await atom.WriteSubtitle(_settings.Value.Description); await atom.WriteGenerator("Miniblog.Core", "https://github.com/madskristensen/Miniblog.Core", "1.0"); await atom.WriteValue("updated", updated.ToString("yyyy-MM-ddTHH:mm:ssZ")); return(atom); }
private async Task <ISyndicationFeedWriter> GetWriter(string?type, XmlWriter xmlWriter, DateTime updated) { var host = $"{this.Request.Scheme}://{this.Request.Host}/"; if (type?.Equals("rss", StringComparison.OrdinalIgnoreCase) ?? false) { var rss = new RssFeedWriter(xmlWriter); await rss.WriteTitle(this.manifest.Name).ConfigureAwait(false); await rss.WriteDescription(this.manifest.Description).ConfigureAwait(false); await rss.WriteGenerator("Miniblog.Core").ConfigureAwait(false); await rss.WriteValue("link", host).ConfigureAwait(false); return(rss); } var atom = new AtomFeedWriter(xmlWriter); await atom.WriteTitle(this.manifest.Name).ConfigureAwait(false); await atom.WriteId(host).ConfigureAwait(false); await atom.WriteSubtitle(this.manifest.Description).ConfigureAwait(false); await atom.WriteGenerator("Miniblog.Core", "https://github.com/madskristensen/Miniblog.Core", "1.0").ConfigureAwait(false); await atom.WriteValue("updated", updated.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture)).ConfigureAwait(false); return(atom); }
private async Task <ISyndicationFeedWriter> GetWriter(string type, XmlWriter xmlWriter, DateTime updated) { string host = Request.Scheme + "://" + Request.Host + "/"; if (type.Equals("rss", StringComparison.OrdinalIgnoreCase)) { var rss = new RssFeedWriter(xmlWriter); await rss.WriteTitle(_manifest.Name); await rss.WriteDescription(_manifest.Description); await rss.WriteGenerator("BrickApp"); await rss.WriteValue("link", host); return(rss); } var atom = new AtomFeedWriter(xmlWriter); await atom.WriteTitle(_manifest.Name); await atom.WriteId(host); await atom.WriteSubtitle(_manifest.Description); await atom.WriteValue("updated", updated.ToString("yyyy-MM-ddTHH:mm:ssZ")); return(atom); }
private async Task <ISyndicationFeedWriter> GetWriter(string type, XmlWriter xmlWriter, DateTime updated) { var host = Request.Scheme + "://" + Request.Host + "/"; if (type.Equals("rss", StringComparison.OrdinalIgnoreCase)) { var rss = new RssFeedWriter(xmlWriter); await rss.WriteTitle(_settings.Brand); await rss.WriteDescription(_settings.Description); await rss.WriteGenerator("Bagombo Blog Engine"); await rss.WriteValue("link", host); return(rss); } var atom = new AtomFeedWriter(xmlWriter); await atom.WriteTitle(_settings.Brand); await atom.WriteId(host); await atom.WriteSubtitle(_settings.Description); await atom.WriteGenerator("Bagombo Blog Engine", "https://github.com/tylerlrhodes/bagobo", "0.2.5a"); await atom.WriteValue("updated", updated.ToString("yyyy-MM-ddTHH:mm:ssZ")); return(atom); }
public async Task ExecuteResultAsync(ActionContext context) { var response = context.HttpContext.Response; var request = context.HttpContext.Request; response.ContentType = "application/atom+xml"; var host = request.Scheme + "://" + request.Host + "/"; using (var xmlWriter = XmlWriter.Create(response.Body, new XmlWriterSettings() { Async = true, Indent = true, Encoding = new UTF8Encoding(true) })) { var atom = new AtomFeedWriter(xmlWriter); await atom.WriteTitle(_options.Value.Title); await atom.WriteId(host); await atom.WriteSubtitle(_options.Value.Description); await atom.WriteRaw($"\n <link rel=\"self\" type=\"application/atom+xml\" href=\"{host}feed/atom\"/>"); await atom.WriteGenerator(_options.Value.GeneratorDescription, _options.Value.SourceCodeLink, "1.0"); var lastPost = _page.Items.FirstOrDefault(); if (lastPost != null) { await atom.WriteValue("updated", lastPost.PublishedDate.Value.ToString("yyyy-MM-ddTHH:mm:ssZ")); } foreach (var post in _page.Items) { var item = new AtomEntry { Title = post.Title, Description = post.GetContentWithoutDataSrc(), Id = $"{host}/{post.Alias}", Published = post.PublishedDate.Value, LastUpdated = post.ModifiedDate, ContentType = "html", }; foreach (var tag in post.BlogStoryTags) { item.AddCategory(new SyndicationCategory(tag.Tag.Name)); } item.AddContributor(new SyndicationPerson(_options.Value.AuthorName, _options.Value.Email, "author")); // item.AddLink(new SyndicationLink(new Uri($"{host}/{post.Alias}"))); await atom.Write(item); } } }
/// <summary> /// Creates the feed writer and writes the initial headers. /// </summary> /// <param name="writer">The current xml writer</param> /// <param name="blog">The blog service</param> /// <param name="url">The currently requested url</param> /// <param name="host">The host name</param> /// <returns>The feed writer</returns> private async Task <ISyndicationFeedWriter> GetWriter(XmlWriter writer, IBlogService blog, string url, string host, DateTime?latest) { var segments = url.Substring(1).Split('/'); if (latest.HasValue && segments.Length == 2) { if (segments[1] == "rss") { var rss = new RssFeedWriter(writer); // Write feed headers await rss.WriteTitle(blog.Settings.Title); await rss.WriteDescription(blog.Settings.Description); await rss.WriteGenerator("RazorBlog"); await rss.WriteValue("link", host); return(rss); } else if (segments[1] == "atom") { var atom = new AtomFeedWriter(writer); // Write feed headers await atom.WriteTitle(blog.Settings.Title); await atom.WriteId(host); await atom.WriteSubtitle(blog.Settings.Description); await atom.WriteGenerator("RazorBlog", "https://github.com/tidyui/razorblog", "0.1"); await atom.WriteValue("updated", latest.Value.ToString("yyyy-MM-ddTHH:mm:ssZ")); return(atom); } } return(null); }
public async Task <ISyndicationFeedWriter> GetWriter(string type, string host, XmlWriter xmlWriter) { var lastPost = _db.BlogPosts.All().OrderByDescending(p => p.Published).FirstOrDefault(); var blog = await _db.CustomFields.GetBlogSettings(); if (lastPost == null) { return(null); } if (type.Equals("rss", StringComparison.OrdinalIgnoreCase)) { var rss = new RssFeedWriter(xmlWriter); await rss.WriteTitle(blog.Title); await rss.WriteDescription(blog.Description); await rss.WriteGenerator("Blogifier"); await rss.WriteValue("link", host); return(rss); } var atom = new AtomFeedWriter(xmlWriter); await atom.WriteTitle(blog.Title); await atom.WriteId(host); await atom.WriteSubtitle(blog.Description); await atom.WriteGenerator("Blogifier", "https://github.com/blogifierdotnet/Blogifier", "1.0"); await atom.WriteValue("updated", lastPost.Published.ToString("yyyy-MM-ddTHH:mm:ssZ")); return(atom); }