protected override void SavePost(Post post, string file) { XDocument doc = new XDocument( new XElement("post", new XElement("title", post.Title), new XElement("slug", post.Slug), new XElement("author", post.Author), new XElement("pubDate", post.PubDate.ToString("yyyy-MM-dd HH:mm:ss")), new XElement("lastModified", post.LastModified.ToString("yyyy-MM-dd HH:mm:ss")), new XElement("excerpt", post.Excerpt), new XElement("content", post.Content), new XElement("categories", string.Empty), new XElement("tags", post.Keywords), new XElement("ispublished", post.IsPublished) )); XElement categories = doc.Document.Element("post").Element("categories"); foreach (string category in post.Categories) { categories.Add(new XElement("category", category)); } using(var stream = new FileStream(file, FileMode.Create)) { doc.Save(stream); } }
protected override void SavePost(Post post, string file) { using (StreamWriter w = File.CreateText(file)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(w, post); } }
public virtual void Delete(Post post) { var cacheKey = string.Format(PostsCacheKey, post.BlogId); var postsFolder = string.Format(PostsFolder, RootFolder, post.BlogId); string file = Path.Combine(postsFolder, post.PostId + "." + FileExtension); File.Delete(file); MemoryCache.Remove(cacheKey); Logger.LogInformation($"{cacheKey} cleared."); }
private static void LoadCategories(Post post, XElement doc) { XElement categories = doc.Element("categories"); if (categories == null) return; List<string> list = new List<string>(); foreach (var node in categories.Elements("category")) { list.Add(node.Value); } post.Categories = list.ToArray(); }
protected override Post GetPost(string file, string blogId) { XElement doc = XElement.Load(file); var post = new Post() { PostId = Path.GetFileNameWithoutExtension(file), BlogId = blogId, Title = ReadValue(doc, "title"), Author = ReadValue(doc, "author"), Excerpt = ReadValue(doc, "excerpt"), Content = ReadValue(doc, "content"), Keywords = ReadValue(doc, "tags"), Slug = ReadValue(doc, "slug").ToLowerInvariant(), PubDate = DateTime.Parse(ReadValue(doc, "pubDate")), LastModified = DateTime.Parse(ReadValue(doc, "lastModified", DateTime.Now.ToString(CultureInfo.InvariantCulture))), IsPublished = bool.Parse(ReadValue(doc, "ispublished", "true")), }; LoadCategories(post, doc); return post; }
public IActionResult EditPost(string postid, string username, string password, Post post, bool publish) { Post match = BlogRepository.GetAll(Blog.Id).FirstOrDefault(p => p.PostId == postid); if (match != null) { match.Title = post.Title; match.Excerpt = post.Excerpt; match.Content = post.Content; if (!string.Equals(match.Slug, post.Slug, StringComparison.OrdinalIgnoreCase)) { match.Slug = CreateSlug(post.Slug); } match.Categories = post.Categories; match.Keywords = post.Keywords; match.IsPublished = publish; BlogRepository.Save(match); } return new XmlRpcResult(match != null); }
public async Task<IViewComponentResult> InvokeAsync(Post post) { return View(post); }
public IActionResult NewPost(string blogid, string username, string password, Post post, bool publish) { try { if (!string.IsNullOrWhiteSpace(post.Slug)) { post.Slug = CreateSlug(post.Slug); } else { post.Slug = CreateSlug(post.Title); } } catch (Exception exc) { return new XmlRpcResult(exc); } post.IsPublished = publish; post.BlogId = blogid; BlogRepository.Save(post); return new XmlRpcResult(post.PostId); }
protected abstract void SavePost(Post post, string file);
public void Save(Post post) { var cacheKey = string.Format(PostsCacheKey, post.BlogId); var postsFolder = string.Format(PostsFolder, RootFolder, post.BlogId); string file = Path.Combine(postsFolder, post.PostId + "." + FileExtension); post.LastModified = DateTime.UtcNow; SavePost(post, file); MemoryCache.Remove(cacheKey); Logger.LogInformation(!File.Exists(file) ? $"New Post - {post.PostId} created." : $"Post - {post.PostId} updated."); Logger.LogInformation($"{cacheKey} cleared."); }