Example #1
0
        private XRpcArray MetaWeblogGetRecentPosts(
            UrlHelper urlHelper,
            string blogId,
            string userName,
            string password,
            int numberOfPosts,
            IEnumerable <IXmlRpcDriver> drivers)
        {
            IUser user = ValidateUser(userName, password);

            // User needs to at least have permission to edit its own blog posts to access the service
            _authorizationService.CheckAccess(Permissions.EditBlogPost, user, null);

            BlogPart blog = _contentManager.Get <BlogPart>(Convert.ToInt32(blogId));

            if (blog == null)
            {
                throw new ArgumentException();
            }

            var array = new XRpcArray();

            foreach (var blogPost in _blogPostService.Get(blog, 0, numberOfPosts, VersionOptions.Latest))
            {
                var postStruct = CreateBlogStruct(blogPost, urlHelper);

                foreach (var driver in drivers)
                {
                    driver.Process(postStruct);
                }

                array.Add(postStruct);
            }
            return(array);
        }
Example #2
0
        private async Task <XRpcArray> MetaWeblogGetUserBlogsAsync(XmlRpcContext context, string userName, string password)
        {
            var user = await ValidateUserAsync(userName, password);

            XRpcArray array = new XRpcArray();

            // Look for all types using ListPart
            foreach (var type in _contentDefinitionManager.ListTypeDefinitions())
            {
                if (!type.Parts.Any(x => x.Name == nameof(ListPart)))
                {
                    continue;
                }

                foreach (var list in await _session.Query <ContentItem, ContentItemIndex>(x => x.ContentType == type.Name).ListAsync())
                {
                    // User needs to at least have permission to edit its own blog posts to access the service
                    if (await _authorizationService.AuthorizeAsync(user, Permissions.EditContent, list))
                    {
                        var metadata           = _contentManager.PopulateAspect <ContentItemMetadata>(list);
                        var displayRouteValues = metadata.DisplayRouteValues;

                        array.Add(new XRpcStruct()
                                  .Set("url", context.Url.Action(displayRouteValues["action"].ToString(), displayRouteValues["controller"].ToString(), displayRouteValues, context.HttpContext.Request.Scheme))
                                  .Set("blogid", list.ContentItemId)
                                  .Set("blogName", metadata.DisplayText));
                    }
                }
            }

            return(array);
        }
Example #3
0
 /// <summary>
 /// Maps a rpc array to XML.
 /// </summary>
 /// <param name="rpcArray">The rpc array.</param>
 /// <returns>The XML element.</returns>
 public XElement MapArray(XRpcArray rpcArray)
 {
     return(new XElement(
                "array",
                new XElement(
                    "data",
                    rpcArray.Data.Select(MapValue))));
 }
Example #4
0
        /// <summary>
        /// Maps an XML element to a rpc array.
        /// </summary>
        /// <param name="source">The XML element to be mapped.</param>
        /// <returns>The rpc array.</returns>
        public XRpcArray MapToArray(XElement source)
        {
            var result = new XRpcArray();

            foreach (var value in source.Elements("data").Elements("value"))
            {
                result.Data.Add(MapValue(value));
            }

            return(result);
        }
Example #5
0
        private async Task <XRpcArray> MetaWeblogGetRecentPosts(
            XmlRpcContext context,
            string contentItemId,
            string userName,
            string password,
            int numberOfPosts,
            IEnumerable <IXmlRpcDriver> drivers)
        {
            var user = await ValidateUserAsync(userName, password);

            // User needs to at least have permission to edit its own blog posts to access the service
            await CheckAccessAsync(Permissions.EditContent, user, null);

            var list = await _contentManager.GetAsync(contentItemId);

            if (list == null)
            {
                throw new InvalidOperationException("Could not find content item " + contentItemId);
            }

            var array = new XRpcArray();

            var contentItems = await _session.Query <ContentItem>()
                               .With <ContainedPartIndex>(x => x.ListContentItemId == contentItemId)
                               .With <ContentItemIndex>(x => x.Latest)
                               .OrderByDescending(x => x.CreatedUtc)
                               .Take(numberOfPosts)
                               .ListAsync();

            foreach (var contentItem in contentItems)
            {
                var postStruct = CreateBlogStruct(context, contentItem);

                foreach (var driver in drivers)
                {
                    driver.Process(postStruct);
                }

                array.Add(postStruct);
            }

            return(array);
        }
Example #6
0
        public void ArrayAndStructShouldWorkAsExpected() {
            var mapper = new XmlRpcWriter();

            var arr = new XRpcArray();
            var structParam = XRpcData.For(new XRpcStruct());

            arr.Data.Add(structParam);
            arr.Data.Add(XRpcData.For(19));

            structParam.Value.Members.Add("Hello", XRpcData.For("world"));
            
            var element = mapper.MapArray(arr);

            Assert.That(NoSpace(element.ToString()), Is.EqualTo(NoSpace(@"
<array><data>
<value><struct>
<member><name>Hello</name><value><string>world</string></value></member>
</struct></value>
<value><int>19</int></value>
</data></array>
")));
        }
Example #7
0
        private XRpcArray MetaWeblogGetUserBlogs(UrlHelper urlHelper,
                                                 string userName,
                                                 string password)
        {
            IUser user = ValidateUser(userName, password);

            XRpcArray array = new XRpcArray();

            foreach (BlogPart blog in _blogService.Get())
            {
                // User needs to at least have permission to edit its own blog posts to access the service
                if (_authorizationService.TryCheckAccess(Permissions.EditBlogPost, user, blog))
                {
                    BlogPart blogPart = blog;
                    array.Add(new XRpcStruct()
                              .Set("url", urlHelper.AbsoluteAction(() => urlHelper.Blog(blogPart)))
                              .Set("blogid", blog.Id)
                              .Set("blogName", blog.Name));
                }
            }

            return(array);
        }
        public void ArrayAndStructShouldWorkAsExpected()
        {
            var mapper = new XmlRpcWriter();

            var arr         = new XRpcArray();
            var structParam = XRpcData.For(new XRpcStruct());

            arr.Data.Add(structParam);
            arr.Data.Add(XRpcData.For(19));

            structParam.Value.Members.Add("Hello", XRpcData.For("world"));

            var element = mapper.MapArray(arr);

            Assert.That(NoSpace(element.ToString()), Is.EqualTo(NoSpace(@"
<array><data>
<value><struct>
<member><name>Hello</name><value><string>world</string></value></member>
</struct></value>
<value><int>19</int></value>
</data></array>
")));
        }
Example #9
0
        private XRpcArray MetaWecAseGetUserCases(UrlHelper urlHelper,
                                                 string userName,
                                                 string password)
        {
            IUser user = ValidateUser(userName, password);

            XRpcArray array = new XRpcArray();

            foreach (CasePart cAse in _cAseService.Get())
            {
                // User needs to at least have permission to edit its own cAse posts to access the service
                if (_authorizationService.TryCheckAccess(Permissions.EditCasePost, user, cAse))
                {
                    CasePart cAsePart = cAse;
                    array.Add(new XRpcStruct()
                              .Set("url", urlHelper.AbsoluteAction(() => urlHelper.Case(cAsePart)))
                              .Set("cAseid", cAse.Id)
                              .Set("cAseName", _contentManager.GetItemMetadata(cAse).DisplayText));
                }
            }

            return(array);
        }
        private XRpcArray MetaWeblogGetTags(string appKey, string userName, string password)
        {
            var user = _membershipService.ValidateUser(userName, password);

            _authorizationService.CheckAccess(StandardPermissions.AccessAdminPanel, user, null);

            var array = new XRpcArray();

            foreach (var tag in _tagService.GetTags())
            {
                var thisTag = tag;
                array.Add(new XRpcStruct()
                          .Set("tag_id", thisTag.TagName)
                          .Set("name", thisTag.TagName));
                // nyi - not yet implemented
                //.Set("count", "")
                //.Set("slug", "")
                //.Set("html_url", "")
                //.Set("rss_url", ""));
            }

            return(array);
        }
Example #11
0
        private XRpcArray MetaWeblogGetTags(string appKey, string userName, string password)
        {
            var user = _membershipService.ValidateUser(userName, password);
            _authorizationService.CheckAccess(StandardPermissions.AccessAdminPanel, user, null);

            var array = new XRpcArray();
            foreach (var tag in _tagService.GetTags()) {
                var thisTag = tag;
                array.Add(new XRpcStruct()
                              .Set("tag_id", thisTag.TagName)
                              .Set("name", thisTag.TagName));
                // nyi - not yet implemented
                              //.Set("count", "")
                              //.Set("slug", "")
                              //.Set("html_url", "")
                              //.Set("rss_url", ""));
            }

            return array;
        }
        /// <summary>
        /// Maps an XML element to a rpc array.
        /// </summary>
        /// <param name="source">The XML element to be mapped.</param>
        /// <returns>The rpc array.</returns>
        public XRpcArray MapToArray(XElement source) {
            var result = new XRpcArray();
            foreach (var value in source.Elements("data").Elements("value")) {
                result.Data.Add(MapValue(value));
            }

            return result;
        }
Example #13
0
        private XRpcArray MetaWeblogGetUserBlogs(UrlHelper urlHelper,
            string userName,
            string password)
        {
            IUser user = ValidateUser(userName, password);

            XRpcArray array = new XRpcArray();
            foreach (BlogPart blog in _blogService.Get()) {
                // User needs to at least have permission to edit its own blog posts to access the service
                if (_authorizationService.TryCheckAccess(Permissions.EditBlogPost, user, blog)) {

                    BlogPart blogPart = blog;
                    array.Add(new XRpcStruct()
                                  .Set("url", urlHelper.AbsoluteAction(() => urlHelper.Blog(blogPart)))
                                  .Set("blogid", blog.Id)
                                  .Set("blogName", blog.Name));
                }
            }

            return array;
        }
Example #14
0
        private XRpcArray MetaWeblogGetRecentPosts(
            UrlHelper urlHelper,
            string blogId,
            string userName,
            string password,
            int numberOfPosts) {

            var user = _membershipService.ValidateUser(userName, password);
            _authorizationService.CheckAccess(StandardPermissions.AccessFrontEnd, user, null);

            var blog = _contentManager.Get<Blog>(Convert.ToInt32(blogId));
            if (blog == null)
                throw new ArgumentException();

            var array = new XRpcArray();
            foreach (var blogPost in _blogPostService.Get(blog).Take(numberOfPosts)) {
                array.Add(CreateBlogStruct(blogPost, urlHelper));
            }
            return array;
        }
Example #15
0
 /// <summary>
 /// Maps a rpc array to XML.
 /// </summary>
 /// <param name="rpcArray">The rpc array.</param>
 /// <returns>The XML element.</returns>
 public XElement MapArray(XRpcArray rpcArray) {
     return new XElement(
         "array",
         new XElement(
             "data",
             rpcArray.Data.Select(MapValue)));
 }
Example #16
0
        private XRpcArray MetaWeblogGetRecentPosts(
            UrlHelper urlHelper,
            string blogId,
            string userName,
            string password,
            int numberOfPosts,
            IEnumerable<IXmlRpcDriver> drivers)
        {
            IUser user = ValidateUser(userName, password);

            // User needs to at least have permission to edit its own blog posts to access the service
            _authorizationService.CheckAccess(Permissions.EditBlogPost, user, null);

            BlogPart blog = _contentManager.Get<BlogPart>(Convert.ToInt32(blogId));
            if (blog == null) {
                throw new ArgumentException();
            }

            var array = new XRpcArray();
            foreach (var blogPost in _blogPostService.Get(blog, 0, numberOfPosts, VersionOptions.Latest)) {
                var postStruct = CreateBlogStruct(blogPost, urlHelper);

                foreach (var driver in drivers)
                    driver.Process(postStruct);

                array.Add(postStruct);
            }
            return array;
        }
Example #17
0
        private XRpcArray MetaWeblogGetUserBlogs(UrlHelper urlHelper,
            string appkey,
            string userName,
            string password) {

            var user = _membershipService.ValidateUser(userName, password);
            _authorizationService.CheckAccess(StandardPermissions.AccessFrontEnd, user, null);

            var array = new XRpcArray();
            foreach (var blog in _blogService.Get()) {
                array.Add(new XRpcStruct()
                              .Set("url", urlHelper.AbsoluteAction(() => urlHelper.Blog(blog.Slug)))
                              .Set("blogid", blog.Id)
                              .Set("blogName", blog.Name));
            }
            return array;
        }