예제 #1
0
        public async Task <IActionResult> IndexAsync(CancellationToken token)
        {
            var query  = new SiteMapQuery(_configurationService.GetSiteName() == ConfigurationService.Site.Frymo);
            var result = await _queryBus.QueryAsync(query, token);

            result.Add(new SiteMapCountDto(SeoType.Static, 1));

            XNamespace nameSpace = "http://www.sitemaps.org/schemas/sitemap/0.9";

            // ReSharper disable once StringLiteralTypo
            var root = new XElement(nameSpace + "sitemapindex");

            foreach (var elem in result)
            {
                for (var i = 0; i <= elem.Count / PageSize; i++)
                {
                    var url = Url.RouteUrl("siteMapDescription",
                                           new { type = elem.Type, index = i },
                                           Request.GetUri().Scheme);
                    root.Add(
                        new XElement(nameSpace + "sitemap",
                                     new XElement(nameSpace + "loc", url)
                                     )
                        );
                }
            }
            var document = new XDocument(
                new XDeclaration("1.0", "utf-8", ""), root);

            return(new FileCallbackResult("application/xml",
                                          async(stream, context) =>
            {
                await document.SaveAsync(stream, SaveOptions.OmitDuplicateNamespaces, token);
            }));
        }
예제 #2
0
 public async Task SiteMapQuery_Ok(bool country)
 {
     var query = new SiteMapQuery(country);
     var _     = await fixture.QueryBus.QueryAsync(query, default);
 }