ActionResult CreateAtomPost() { if (!BasicAuthSingleAdminUserModule.ForceSslAndBasicAuthAsAdmin()) { return(null); } // Get post data SyndicationItem entry = null; using (var reader = XmlReader.Create(Request.InputStream)) { entry = SyndicationItem.Load(reader); } // Create post var post = new Post() { Categories = entry.Categories.Aggregate("", (cats, cat) => cats.Length == 0 ? cat.Name : cats + "," + cat.Name), Content = ((TextSyndicationContent)entry.Content).Text, CreationDate = entry.PublishDate < minDate ? DateTime.Now : entry.PublishDate.DateTime, Author = entry.Authors.Count > 0 ? entry.Authors[0].Name : null, Email = entry.Authors.Count > 0 ? entry.Authors[0].Email : null, IsActive = true, Title = entry.Title.Text, UuidString = Guid.NewGuid().ToString(), }; db.Add(post); db.SaveChanges(); // Return the updated post var postLink = GetAtomPostLink(post.Id); entry.Id = postLink; entry.Authors.Add(new SyndicationPerson() { Name = db.Site.ContactName, Email = db.Site.ContactEmail }); var sb = new StringBuilder(); // OMG! WLW crashes if it gets back an XML declaration! using (var writer = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true })) { entry.SaveAsAtom10(writer); } var result = new SimpleActionResult() { ResponseOut = sb.ToString(), StatusCode = 201, StatusDescription = "Created" }; result.Headers.Add("Location", postLink); return(result); }
ActionResult DeleteAtomPost(int id) { if (!BasicAuthSingleAdminUserModule.ForceSslAndBasicAuthAsAdmin()) { return(null); } var vm = new PostDetailsViewModel(db, id, Request.Url); if (vm.Post == null) { return(new SimpleActionResult() { StatusCode = 404, StatusDescription = "Resource Not Found" }); } vm.Post.IsActive = false; db.SaveChanges(); return(new SimpleActionResult()); }
ActionResult UpdateAtomPost(int id) { if (!BasicAuthSingleAdminUserModule.ForceSslAndBasicAuthAsAdmin()) { return(null); } var vm = new PostDetailsViewModel(db, id, Request.Url); if (vm.Post == null) { return(new SimpleActionResult() { StatusCode = 404, StatusDescription = "Resource Not Found" }); } // Get post data SyndicationItem entry = null; using (var reader = XmlReader.Create(Request.InputStream)) { entry = SyndicationItem.Load(reader); } // Update post var post = vm.Post; post.Categories = entry.Categories.Aggregate("", (cats, cat) => cats.Length == 0 ? cat.Name : cats + "," + cat.Name); post.Content = ((TextSyndicationContent)entry.Content).Text; post.CreationDate = entry.PublishDate < minDate ? DateTime.Now : entry.PublishDate.DateTime; post.Author = entry.Authors.Count > 0 ? entry.Authors[0].Name : null; post.IsActive = true; post.Title = entry.Title.Text; db.SaveChanges(); return(new SimpleActionResult()); }