Exemplo n.º 1
0
        private async Task <XRpcStruct> MetaWeblogGetPostAsync(
            XmlRpcContext context,
            string contentItemId,
            string userName,
            string password,
            IEnumerable <IXmlRpcDriver> drivers)
        {
            var user = await ValidateUserAsync(userName, password);

            var contentItem = await _contentManager.GetAsync(contentItemId, VersionOptions.Latest);

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

            await CheckAccessAsync(Permissions.EditContent, user, contentItem);

            var postStruct = CreateBlogStruct(context, contentItem);

            foreach (var driver in _metaWeblogDrivers)
            {
                driver.BuildPost(postStruct, context, contentItem);
            }

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

            return(postStruct);
        }
Exemplo n.º 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.QueryAsync <ContentItem, ContentItemIndex>(x => x.ContentType == type.Name).List())
                {
                    // 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);
        }
Exemplo n.º 3
0
        private XRpcStruct CreateBlogStruct(XmlRpcContext context, ContentItem contentItem)
        {
            var metadata = _contentManager.PopulateAspect <ContentItemMetadata>(contentItem);

            var url = context.Url.Action(
                metadata.DisplayRouteValues["action"].ToString(),
                metadata.DisplayRouteValues["controller"].ToString(),
                metadata.DisplayRouteValues,
                context.HttpContext.Request.Scheme);

            if (contentItem.HasDraft())
            {
                url = context.Url.Action("Preview", "Item", new { area = "Orchard.Contents", contentItemId = contentItem.ContentItemId });
            }

            var blogStruct = new XRpcStruct()
                             .Set("postid", contentItem.ContentItemId)
                             .Set("link", url)
                             .Set("permaLink", url);

            if (contentItem.PublishedUtc != null)
            {
                blogStruct.Set("dateCreated", contentItem.PublishedUtc);
                blogStruct.Set("date_created_gmt", contentItem.PublishedUtc);
            }

            foreach (var driver in _metaWeblogDrivers)
            {
                driver.BuildPost(blogStruct, context, contentItem);
            }

            return(blogStruct);
        }
Exemplo n.º 4
0
        private async Task <XRpcMethodResponse> DispatchAsync(XRpcMethodCall request)
        {
            var context = new XmlRpcContext
            {
                Url = Url,
                ControllerContext = ControllerContext,
                HttpContext       = HttpContext,
                RpcMethodCall     = request
            };

            try
            {
                foreach (var handler in _xmlRpcHandlers)
                {
                    await handler.ProcessAsync(context);
                }
            }
            catch (Exception e)
            {
                // if a core exception is raised, report the error message, otherwise signal a 500
                context.RpcMethodResponse       = context.RpcMethodResponse ?? new XRpcMethodResponse();
                context.RpcMethodResponse.Fault = new XRpcFault(0, e.Message);
            }

            return(context.RpcMethodResponse);
        }
Exemplo n.º 5
0
        public void Process(XmlRpcContext context)
        {
            switch (context.Request.MethodName)
            {
            case "metaWeblog.newPost":
                MetaWeblogSetCustomCreatedDate(
                    GetId(context.Response),
                    Convert.ToString(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    Convert.ToBoolean(context.Request.Params[4].Value),
                    context._drivers);
                break;

            case "metaWeblog.editPost":
                MetaWeblogSetCustomCreatedDate(
                    GetId(context.Response),
                    Convert.ToString(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    Convert.ToBoolean(context.Request.Params[4].Value),
                    context._drivers);
                break;
            }
        }
Exemplo n.º 6
0
        private static string ReplaceTokens(XmlRpcContext context, string rawUrl)
        {
            var url = rawUrl;

            foreach (var pair in context.Values)
            {
                url = url.Replace($"{{{pair.Key}}}", pair.Value);
            }
            return(url);
        }
Exemplo n.º 7
0
        public async Task ProcessRequestAsync(XmlRpcContext context)
        {
            var request = context.HttpContext.Request;

            if (!request.Method.Equals(
                    HttpVerbs.Get.ToString(),
                    StringComparison.OrdinalIgnoreCase))
            {
                throw new InvalidOperationException();
            }

            using (var ms = new MemoryStream())
            {
                var xmlWriter = XmlWriter.Create(ms);

                xmlWriter.WriteStartDocument();
                {
                    xmlWriter.WriteStartElement("rsd", "http://schemas.microsoft.com/wlw/manifest/weblog");
                    {
                        xmlWriter.WriteAttributeString("version", "1.0");
                        xmlWriter.WriteStartElement("service");
                        {
                            xmlWriter.WriteStartElement("engineName");
                            xmlWriter.WriteString(context.Options.EngineName);
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("homePageLink");
                            xmlWriter.WriteString(context.GenerateHomepageUrl());
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("apis");
                            {
                                xmlWriter.WriteStartElement("api");
                                xmlWriter.WriteAttributeString("name", "MetaWeblog");
                                xmlWriter.WriteAttributeString("preferred", "true");
                                xmlWriter.WriteAttributeString("apiLink", context.GenerateEndpointUrl());
                                xmlWriter.WriteAttributeString("blogID", context.Values[context.Options.BlogIdTokenName] ?? string.Empty);
                            }
                            xmlWriter.WriteEndElement();
                        }
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                }
                xmlWriter.WriteEndDocument();

                xmlWriter.Flush();
                ms.Position = 0;

                context.HttpContext.Response.ContentType = "text/xml";

                await ms.CopyToAsync(context.HttpContext.Response.Body);
            }
        }
Exemplo n.º 8
0
 public void Process(XmlRpcContext context)
 {
     if (context.Request.MethodName == "metaWeblog.newMediaObject")
     {
         var result = MetaWeblogNewMediaObject(
             Convert.ToString(context.Request.Params[1].Value),
             Convert.ToString(context.Request.Params[2].Value),
             (XRpcStruct)context.Request.Params[3].Value);
         context.Response = new XRpcMethodResponse().Add(result);
     }
 }
Exemplo n.º 9
0
        public override void BuildPost(XRpcStruct rpcStruct, XmlRpcContext context, ContentItem contentItem)
        {
            var bodyPart = contentItem.As <BodyPart>();

            if (bodyPart == null)
            {
                return;
            }

            rpcStruct.Set("description", bodyPart.Body);
        }
Exemplo n.º 10
0
        public override void BuildPost(XRpcStruct rpcStruct, XmlRpcContext context, ContentItem contentItem)
        {
            var titlePart = contentItem.As <TitlePart>();

            if (titlePart == null)
            {
                return;
            }

            rpcStruct.Set("title", _encoder.Encode(titlePart.Title));
        }
Exemplo n.º 11
0
        public override void BuildPost(XRpcStruct rpcStruct, XmlRpcContext context, ContentItem contentItem)
        {
            var autoroutePart = contentItem.As <AutoroutePart>();

            if (autoroutePart == null)
            {
                return;
            }

            rpcStruct.Set("wp_slug", autoroutePart.Path);
        }
        public async Task <bool> ProcessAsync(XmlRpcContext context)
        {
            foreach (var handler in Handlers)
            {
                if (handler.CanProcess(context))
                {
                    await handler.ProcessRequestAsync(context);

                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 13
0
        public void Process(XmlRpcContext context)
        {
            switch (context.Request.MethodName)
            {
            case "metaWeblog.getCategories":     // hack... because live writer still asks for it...
                if (context.Response == null)
                {
                    context.Response = new XRpcMethodResponse().Add(new XRpcArray());
                }
                break;

            case "wp.getTags":
                var tags = MetaWeblogGetTags(
                    Convert.ToString(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value));
                context.Response = new XRpcMethodResponse().Add(tags);
                break;

            case "metaWeblog.getPost":
                MetaWeblogAttachTagsToPost(
                    GetPost(context.Response),
                    Convert.ToInt32(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    context._drivers);
                break;

            case "metaWeblog.newPost":
                MetaWeblogUpdateTags(
                    GetId(context.Response),
                    Convert.ToString(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    Convert.ToBoolean(context.Request.Params[4].Value),
                    context._drivers);
                break;

            case "metaWeblog.editPost":
                MetaWeblogUpdateTags(
                    GetId(context.Response),
                    Convert.ToString(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    Convert.ToBoolean(context.Request.Params[4].Value),
                    context._drivers);
                break;
            }
        }
Exemplo n.º 14
0
        public void Process(XmlRpcContext context)
        {
            var urlHelper = new UrlHelper(context.ControllerContext.RequestContext, _routeCollection);

            if (context.Request.MethodName == "metaWeblog.newMediaObject")
            {
                var result = MetaWeblogNewMediaObject(
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    urlHelper);
                context.Response = new XRpcMethodResponse().Add(result);
            }
        }
Exemplo n.º 15
0
        private XRpcMethodResponse Dispatch(XRpcMethodCall request) {
            var context = new XmlRpcContext { ControllerContext = ControllerContext, HttpContext = HttpContext, Request = request };
            try {
                foreach (var handler in _xmlRpcHandlers) {
                    handler.Process(context);
                }
            }
            catch (OrchardCoreException e) {
                // if a core exception is raised, report the error message, otherwise signal a 500
                context.Response =  context.Response ?? new XRpcMethodResponse();
                context.Response.Fault = new XRpcFault(0, e.LocalizedMessage.ToString());
            }

            return context.Response;
        }
Exemplo n.º 16
0
        /// <summary>
        /// Generate absolute Url
        /// </summary>
        /// <param name="context"></param>
        /// <param name="relativeUrl"></param>
        /// <returns></returns>
        private static string GenerateAbsoluteUrl(XmlRpcContext context, string relativeUrl)
        {
            var builder = new UriBuilder();
            var request = context.HttpContext.Request;

            builder.Scheme = request.Scheme;
            builder.Host   = request.Host.Host;
            if (request.Host.Port.HasValue)
            {
                builder.Port = request.Host.Port.Value;
            }
            builder.Path = relativeUrl;

            return(builder.ToString());
        }
Exemplo n.º 17
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);
        }
Exemplo n.º 18
0
        private XRpcMethodResponse Dispatch(XRpcMethodCall request)
        {
            var context = new XmlRpcContext {
                ControllerContext = ControllerContext, HttpContext = HttpContext, Request = request
            };

            try {
                foreach (var handler in _xmlRpcHandlers)
                {
                    handler.Process(context);
                }
            }
            catch (OrchardCoreException e) {
                // if a core exception is raised, report the error message, otherwise signal a 500
                context.Response       = context.Response ?? new XRpcMethodResponse();
                context.Response.Fault = new XRpcFault(0, e.LocalizedMessage.ToString());
            }

            return(context.Response);
        }
Exemplo n.º 19
0
        /// <summary>
        /// Response to the request
        /// </summary>
        /// <param name="context"></param>
        /// <param name="rpcService"></param>
        /// <param name="provider"></param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context, IXmlRpcService rpcService, IMetaWeblogEndpointProvider provider)
        {
            var scopeFactory  = serviceProvider.GetRequiredService <IServiceScopeFactory>();
            var xmlRpcContext = new XmlRpcContext(context, Options?.Value, new Dictionary <string, string>(), serviceProvider, scopeFactory, new Type[] { rpcService.GetType() });

            if (context.Request.Path.StartsWithSegments(xmlRpcContext.Options.SummaryEndpoint) ||
                context.Request.Path.StartsWithSegments(xmlRpcContext.Options.Endpoint) ||
                context.Request.Path.StartsWithSegments(xmlRpcContext.Options.RsdEndpoint) || context.Request.Path.StartsWithSegments(xmlRpcContext.Options.ManifestEndpoint)
                )
            {
                // Add blog id into the context.
                xmlRpcContext.Values.Add(Options?.Value.BlogIdTokenName, context.Request.Path.ExtractBlogId());

                var result = await provider.ProcessAsync(xmlRpcContext);

                if (result)
                {
                    return;
                }
            }
            await next.Invoke(context);
        }
Exemplo n.º 20
0
 private XRpcMethodResponse Dispatch(XRpcMethodCall request) {
     var context = new XmlRpcContext { ControllerContext = ControllerContext, HttpContext = HttpContext, Request = request };
     foreach (var handler in _xmlRpcHandlers)
         handler.Process(context);
     return context.Response;
 }
 public void Process(XmlRpcContext context)
 {
 }
Exemplo n.º 22
0
        public async Task ProcessAsync(XmlRpcContext context)
        {
            if (context.RpcMethodCall.MethodName == "blogger.getUsersBlogs")
            {
                var result = await MetaWeblogGetUserBlogsAsync(context,
                                                               Convert.ToString(context.RpcMethodCall.Params[1].Value),
                                                               Convert.ToString(context.RpcMethodCall.Params[2].Value));

                context.RpcMethodResponse = new XRpcMethodResponse().Add(result);
            }

            if (context.RpcMethodCall.MethodName == "metaWeblog.getRecentPosts")
            {
                var result = await MetaWeblogGetRecentPosts(
                    context,
                    Convert.ToString(context.RpcMethodCall.Params[0].Value),
                    Convert.ToString(context.RpcMethodCall.Params[1].Value),
                    Convert.ToString(context.RpcMethodCall.Params[2].Value),
                    Convert.ToInt32(context.RpcMethodCall.Params[3].Value),
                    context.Drivers);

                context.RpcMethodResponse = new XRpcMethodResponse().Add(result);
            }

            if (context.RpcMethodCall.MethodName == "metaWeblog.newPost")
            {
                var result = await MetaWeblogNewPostAsync(
                    Convert.ToString(context.RpcMethodCall.Params[0].Value),
                    Convert.ToString(context.RpcMethodCall.Params[1].Value),
                    Convert.ToString(context.RpcMethodCall.Params[2].Value),
                    (XRpcStruct)context.RpcMethodCall.Params[3].Value,
                    Convert.ToBoolean(context.RpcMethodCall.Params[4].Value),
                    context.Drivers);

                context.RpcMethodResponse = new XRpcMethodResponse().Add(result);
            }

            if (context.RpcMethodCall.MethodName == "metaWeblog.getPost")
            {
                var result = await MetaWeblogGetPostAsync(
                    context,
                    Convert.ToString(context.RpcMethodCall.Params[0].Value),
                    Convert.ToString(context.RpcMethodCall.Params[1].Value),
                    Convert.ToString(context.RpcMethodCall.Params[2].Value),
                    context.Drivers);

                context.RpcMethodResponse = new XRpcMethodResponse().Add(result);
            }

            if (context.RpcMethodCall.MethodName == "metaWeblog.editPost")
            {
                var result = await MetaWeblogEditPostAsync(
                    Convert.ToString(context.RpcMethodCall.Params[0].Value),
                    Convert.ToString(context.RpcMethodCall.Params[1].Value),
                    Convert.ToString(context.RpcMethodCall.Params[2].Value),
                    (XRpcStruct)context.RpcMethodCall.Params[3].Value,
                    Convert.ToBoolean(context.RpcMethodCall.Params[4].Value),
                    context.Drivers);

                context.RpcMethodResponse = new XRpcMethodResponse().Add(result);
            }

            if (context.RpcMethodCall.MethodName == "blogger.deletePost")
            {
                var result = await MetaWeblogDeletePostAsync(
                    Convert.ToString(context.RpcMethodCall.Params[1].Value),
                    Convert.ToString(context.RpcMethodCall.Params[2].Value),
                    Convert.ToString(context.RpcMethodCall.Params[3].Value),
                    context.Drivers);

                context.RpcMethodResponse = new XRpcMethodResponse().Add(result);
            }
        }
Exemplo n.º 23
0
        public void Process(XmlRpcContext context)
        {
            var urlHelper = new UrlHelper(context.ControllerContext.RequestContext, _routeCollection);

            if (context.Request.MethodName == "blogger.getUsersBlogs")
            {
                var result = MetaWeblogGetUserBlogs(urlHelper,
                                                    Convert.ToString(context.Request.Params[1].Value),
                                                    Convert.ToString(context.Request.Params[2].Value));

                context.Response = new XRpcMethodResponse().Add(result);
            }

            if (context.Request.MethodName == "metaWeblog.getRecentPosts")
            {
                var result = MetaWeblogGetRecentPosts(urlHelper,
                                                      Convert.ToString(context.Request.Params[0].Value),
                                                      Convert.ToString(context.Request.Params[1].Value),
                                                      Convert.ToString(context.Request.Params[2].Value),
                                                      Convert.ToInt32(context.Request.Params[3].Value),
                                                      context._drivers);

                context.Response = new XRpcMethodResponse().Add(result);
            }

            if (context.Request.MethodName == "metaWeblog.newPost")
            {
                var result = MetaWeblogNewPost(
                    Convert.ToString(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    Convert.ToBoolean(context.Request.Params[4].Value),
                    context._drivers);

                context.Response = new XRpcMethodResponse().Add(result);
            }

            if (context.Request.MethodName == "metaWeblog.getPost")
            {
                var result = MetaWeblogGetPost(
                    urlHelper,
                    Convert.ToInt32(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    context._drivers);
                context.Response = new XRpcMethodResponse().Add(result);
            }

            if (context.Request.MethodName == "metaWeblog.editPost")
            {
                var result = MetaWeblogEditPost(
                    Convert.ToInt32(context.Request.Params[0].Value),
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    (XRpcStruct)context.Request.Params[3].Value,
                    Convert.ToBoolean(context.Request.Params[4].Value),
                    context._drivers);
                context.Response = new XRpcMethodResponse().Add(result);
            }

            if (context.Request.MethodName == "blogger.deletePost")
            {
                var result = MetaWeblogDeletePost(
                    Convert.ToString(context.Request.Params[1].Value),
                    Convert.ToString(context.Request.Params[2].Value),
                    Convert.ToString(context.Request.Params[3].Value),
                    context._drivers);
                context.Response = new XRpcMethodResponse().Add(result);
            }
        }
Exemplo n.º 24
0
 public virtual void BuildPost(XRpcStruct rpcStruct, XmlRpcContext context, ContentItem contentItem)
 {
 }
Exemplo n.º 25
0
 public void Process(XmlRpcContext context)
 {
     ProcessCalls++;
     context.Response = new XRpcMethodResponse();
 }
Exemplo n.º 26
0
 public bool CanProcess(XmlRpcContext context)
 {
     return(context.HttpContext.Request.Path.StartsWithSegments(context.Options.RsdEndpoint));
 }
Exemplo n.º 27
0
        public async Task ProcessRequestAsync(XmlRpcContext context)
        {
            var request = context.HttpContext.Request;

            if (!request.Method.Equals(
                    HttpVerbs.Get.ToString(),
                    StringComparison.OrdinalIgnoreCase))
            {
                throw new InvalidOperationException();
            }

            using (var ms = new MemoryStream())
            {
                var xmlWriter = XmlWriter.Create(ms);

                xmlWriter.WriteStartDocument();
                {
                    xmlWriter.WriteStartElement("manifest", "http://schemas.microsoft.com/wlw/manifest/weblog");
                    {
                        xmlWriter.WriteStartElement("options");
                        {
                            //<clientType>Metaweblog</clientType>
                            xmlWriter.WriteStartElement("clientType");
                            xmlWriter.WriteString("Metaweblog");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsExcerpt");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsNewCategories");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsNewCategoriesInline");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsPostAsDraft");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsFileUpload");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsKeywords");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();

                            xmlWriter.WriteStartElement("supportsSlug");
                            xmlWriter.WriteString("Yes");
                            xmlWriter.WriteEndElement();
                        }
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                }
                xmlWriter.WriteEndDocument();

                xmlWriter.Flush();
                ms.Position = 0;

                context.HttpContext.Response.ContentType = "text/xml";

                await ms.CopyToAsync(context.HttpContext.Response.Body);
            }
        }
Exemplo n.º 28
0
        public static string GenerateSummaryUrl(this XmlRpcContext context)
        {
            string url = string.Concat(context.Options.SummaryEndpoint, '/', context.Values[context.Options.BlogIdTokenName]);

            return(GenerateAbsoluteUrl(context, url));
        }
Exemplo n.º 29
0
        public static string GenerateHomepageUrl(this XmlRpcContext context)
        {
            string url = ReplaceTokens(context, context.Options.HomePageEndpointPattern);

            return(GenerateAbsoluteUrl(context, url));
        }