コード例 #1
0
ファイル: PostsController.cs プロジェクト: csells/sb4
        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);
        }
コード例 #2
0
ファイル: PostsController.cs プロジェクト: csells/sb4
        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());
        }
コード例 #3
0
ファイル: PostsController.cs プロジェクト: csells/sb4
        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());
        }