using CookComputing.XmlRpc; using System; using System.Linq; using System.Collections.Generic; using System.Web; [XmlRpcMissingMapping(MappingAction.Ignore)] public class Post { public Post() { ID = Guid.NewGuid().ToString(); Title = "My new post"; Author = HttpContext.Current.User.Identity.Name; Content = "the content"; PubDate = DateTime.UtcNow; LastModified = DateTime.UtcNow; Categories = new string[0]; Comments = new List(); IsPublished = true; } [XmlRpcMember("postid")] public string ID { get; set; } [XmlRpcMember("title")] public string Title { get; set; } [XmlRpcMember("author")] public string Author { get; set; } [XmlRpcMember("wp_slug")] public string Slug { get; set; } [XmlRpcMember("description")] public string Content { get; set; } [XmlRpcMember("dateCreated")] public DateTime PubDate { get; set; } [XmlRpcMember("dateModified")] public DateTime LastModified { get; set; } public bool IsPublished { get; set; } [XmlRpcMember("categories")] public string[] Categories { get; set; } public List Comments { get; private set; } public Uri AbsoluteUrl { get { Uri requestUrl = HttpContext.Current.Request.Url; return new Uri(requestUrl.Scheme + "://" + requestUrl.Authority + Url, UriKind.Absolute); } } public Uri Url { get { return new Uri(VirtualPathUtility.ToAbsolute("~/post/" + Slug), UriKind.Relative); } } public bool AreCommentsOpen(HttpContextBase context) { return PubDate > DateTime.UtcNow.AddDays(-Blog.DaysToComment) || context.User.Identity.IsAuthenticated; } public int CountApprovedComments(HttpContextBase context) { return (Blog.ModerateComments && !context.User.Identity.IsAuthenticated) ? this.Comments.Count(c => c.IsApproved) : this.Comments.Count; } }