/// <inheritdoc/> public async Task <SitemapResult> BuildSitemapAsync() { var baseUrl = this.httpContextAccessor.HttpContext.GetAbsoluteRoute(string.Empty); var sitemapPatterns = await this.sitemapComposition.SetupAsync(); var result = new SitemapResult(); foreach (var pattern in sitemapPatterns) { pattern.SetBaseUrl(baseUrl); result.Urls.AddRange(await pattern.BuildPatternUrlsAsync()); } return(result); }
public async Task <SitemapResult> GenerateSitemapAsync() { var patternsEntities = await this.standardRepository.GetAllAsync <SitemapItemPattern>(); SitemapResult result = new SitemapResult(); foreach (var pattern in patternsEntities) { if ((pattern.DomainOnly && this.baseUrl == pattern.Domain) || !pattern.DomainOnly) { string domain = string.IsNullOrEmpty(pattern.Domain) ? this.baseUrl : pattern.Domain; if (!pattern.SinglePage) { var petternUrls = GetUrlsByPattern(pattern.Pattern, pattern.RelatedEntity); foreach (var url in petternUrls) { result.Urls.Add(new Url { Location = $"{domain}{url}", Priority = pattern.Priority.ToString(), ChangeFrequency = pattern.ChangeFrequency.ToString() }); } } else { result.Urls.Add(new Url { Location = $"{domain}{pattern.Pattern}", Priority = pattern.Priority.ToString(), ChangeFrequency = pattern.ChangeFrequency.ToString() }); } } } return(result); }
public async Task <IActionResult> Sitemap() { SitemapResult sitemapResult = await this.seoService.GenerateSitemapAsync(); return(Ok(sitemapResult)); }
public async Task <IActionResult> Sitemap([FromServices] ISitemapBuilder sitemapBuilder) { SitemapResult sitemapResult = await sitemapBuilder.BuildSitemapAsync(); return(this.Ok(sitemapResult)); }
public async Task <IActionResult> Analyze([FromForm] string url) { try { string sitemapUrl = url; if (!sitemapUrl.EndsWith("sitemap.xml")) { sitemapUrl += "/sitemap.xml"; } DataContext db = new DataContext(); DbInitializer.Initialize(db); SitemapResult sitemapResult = new SitemapResult() { Url = url, AnalysisDate = DateTime.Now }; db.SitemapResults.Add(sitemapResult); string sitemapXml; sitemapXml = await this.GetSitemap(sitemapUrl); XmlDocument sitemap = new XmlDocument(); sitemap.LoadXml(sitemapXml); foreach (XmlNode urlnode in sitemap.DocumentElement.ChildNodes) { foreach (XmlNode locnode in urlnode.ChildNodes) { if (locnode.Name != "loc") { continue; } string checkingUrl = locnode.InnerText.Trim(); double responseTime = await this.CheckUrlAsync(checkingUrl); SitemapItemResult itemResult = new SitemapItemResult() { ItemUrl = checkingUrl, RespponseTimeMS = responseTime, SitemapResult = sitemapResult }; db.SitemapItemResults.Add(itemResult); } } await db.SaveChangesAsync(); } catch (Exception exception) { ViewBag.Exception = exception; return(View("AnalizeError")); } return(View()); }