async Task ISitemapSourceBuilder.BuildAsync(SitemapSource source, SitemapBuilderContext context) { var tSource = source as TSitemapSource; if (tSource != null) { await BuildSourceAsync(tSource, context); } }
public override async Task BuildSourceAsync(CustomPathSitemapSource source, SitemapBuilderContext context) { var url = new XElement(Namespace + "url"); if (await BuildUrlsetMetadataAsync(source, context, url)) { context.Response.ResponseElement.Add(url); } }
public async Task BuildAsync(SitemapType sitemap, SitemapBuilderContext context) { var tSitemap = sitemap as TSitemapType; if (tSitemap != null) { await BuildSitemapTypeAsync(tSitemap, context); } }
private Task <bool> BuildUrlsetMetadataAsync(CustomPathSitemapSource source, SitemapBuilderContext context, XElement url) { if (BuildUrl(context, source, url)) { PopulateLastMod(source, url); PopulateChangeFrequencyPriority(source, url); return(Task.FromResult(true)); } return(Task.FromResult(false)); }
public override async Task BuildSitemapTypeAsync(Sitemap sitemap, SitemapBuilderContext context) { context.Response = new SitemapResponse { ResponseElement = new XElement(Namespace + "urlset") }; foreach (var source in sitemap.SitemapSources) { foreach (var sourceBuilder in _sitemapSourceBuilders) { await sourceBuilder.BuildAsync(source, context); } } }
private bool BuildUrl(SitemapBuilderContext context, CustomPathSitemapSource source, XElement url) { if (string.IsNullOrEmpty(source.Path)) { return(false); } // Add ~/ to the path, because the it is inserted without leading /. var path = "~/" + source.Path; var loc = new XElement(Namespace + "loc"); loc.Add(context.HostPrefix + context.UrlHelper.Content(path)); url.Add(loc); return(true); }
public override async Task BuildSitemapTypeAsync(Sitemap sitemap, SitemapBuilderContext context) { context.Response = new SitemapResponse { ResponseElement = new XElement(Namespace + "urlset", new XAttribute(XNamespace.Xmlns + "xsi", SchemaInstance), new XAttribute(SchemaInstance + "schemaLocation", SchemaLocation)) }; foreach (var source in sitemap.SitemapSources) { foreach (var sourceBuilder in _sitemapSourceBuilders) { await sourceBuilder.BuildAsync(source, context); } } }
public override async Task BuildSitemapTypeAsync(SitemapIndex sitemap, SitemapBuilderContext context) { context.Response = new SitemapResponse { ResponseElement = new XElement(Namespace + "sitemapindex", new XAttribute(XNamespace.Xmlns + "xsi", SchemaInstance), new XAttribute(SchemaInstance + "schemaLocation", SchemaLocation)) }; var indexSource = sitemap.SitemapSources.FirstOrDefault() as SitemapIndexSource; if (indexSource == null) { return; } var containedSitemaps = (await _sitemapManager.GetSitemapsAsync()) .Where(s => s.Enabled && indexSource.ContainedSitemapIds.Any(id => id == s.SitemapId)); foreach (var containedSitemap in containedSitemaps) { var xmlSitemap = new XElement(Namespace + "sitemap"); var loc = new XElement(Namespace + "loc"); var routeValues = new RouteValueDictionary(_sitemapsOptions.GlobalRouteValues) { [_sitemapsOptions.SitemapIdKey] = containedSitemap.SitemapId }; loc.Add(context.HostPrefix + context.UrlHelper.Action(routeValues["Action"].ToString(), routeValues)); xmlSitemap.Add(loc); var lastModDate = await _sitemapModifiedDateProvider.GetLastModifiedDateAsync(containedSitemap); if (lastModDate.HasValue) { var lastMod = new XElement(Namespace + "lastmod"); lastMod.Add(lastModDate.GetValueOrDefault().ToString("yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture)); xmlSitemap.Add(lastMod); } context.Response.ResponseElement.Add(xmlSitemap); } }
public async Task <XDocument> BuildAsync(SitemapType sitemap, SitemapBuilderContext context) { if (!sitemap.Enabled) { return(null); } foreach (var sitemapTypeBuilder in _sitemapTypeBuilders) { await sitemapTypeBuilder.BuildAsync(sitemap, context); if (context.Response != null) { var document = new XDocument(context.Response.ResponseElement); return(new XDocument(document)); } } return(null); }
public abstract Task BuildSourceAsync(TSitemapSource source, SitemapBuilderContext context);
public abstract Task BuildSitemapTypeAsync(TSitemapType sitemap, SitemapBuilderContext context);