Skip to content

Commit 4f9d960

Browse files
committed
sitemap genertator
1 parent a43c532 commit 4f9d960

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@
2020
/ClientApp/package-lock.json
2121
/appsettings.Development.json
2222
/wwwroot/backup
23+
/wwwroot/sitemap.xml

Controllers/MetaController.cs

+48
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
11
using Microsoft.AspNetCore.Authorization;
22
using Microsoft.AspNetCore.Mvc;
3+
using Microsoft.EntityFrameworkCore;
34
using System.Diagnostics;
5+
using System.Xml;
6+
using Waffle.Data;
7+
using Waffle.Extensions;
48
using Waffle.Foundations;
59

610
namespace Waffle.Controllers;
711

812
public class MetaController : BaseController
913
{
14+
private readonly ApplicationDbContext _context;
15+
private readonly IWebHostEnvironment _webHostEnvironment;
16+
17+
public MetaController(ApplicationDbContext context, IWebHostEnvironment webHostEnvironment)
18+
{
19+
_context = context;
20+
_webHostEnvironment = webHostEnvironment;
21+
}
22+
1023
[HttpGet("/info"), AllowAnonymous]
1124
public IActionResult Info()
1225
{
@@ -17,4 +30,39 @@ public IActionResult Info()
1730

1831
return Ok($"Version: {version}, Last Updated: {creationDate}");
1932
}
33+
34+
[HttpGet("sitemap-generator"), AllowAnonymous]
35+
public async Task<IActionResult> SitemapGeneratorAsync()
36+
{
37+
var catalogs = await _context.Catalogs.Where(x => x.Active).ToListAsync();
38+
// Create an XmlWriter to generate the sitemap XML file
39+
var path = Path.Combine(_webHostEnvironment.WebRootPath, "sitemap.xml");
40+
using (XmlWriter writer = XmlWriter.Create(path))
41+
{
42+
// Start the document
43+
writer.WriteStartDocument();
44+
writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
45+
46+
// Add URLs and metadata
47+
foreach (var item in catalogs)
48+
{
49+
var url = item.GetUrl();
50+
AddUrl(writer, $"https://{Request.Host.Value}{url}", item.ModifiedDate.ToString("yyyy-MM-dd"), "0.8");
51+
}
52+
53+
// End the document
54+
writer.WriteEndElement();
55+
writer.WriteEndDocument();
56+
}
57+
return Ok();
58+
}
59+
60+
static void AddUrl(XmlWriter writer, string url, string lastModified, string priority)
61+
{
62+
writer.WriteStartElement("url");
63+
writer.WriteElementString("loc", url);
64+
writer.WriteElementString("lastmod", lastModified);
65+
writer.WriteElementString("priority", priority);
66+
writer.WriteEndElement();
67+
}
2068
}

0 commit comments

Comments
 (0)