sitemap.go (1142B)
1 package handlers 2 3 import ( 4 "bytes" 5 "fmt" 6 "net/http" 7 8 "git.prime8.dev/moncheeta/prime8dev/internal/config" 9 "git.prime8.dev/moncheeta/prime8dev/internal/content" 10 ) 11 12 func (h *Handler) SitemapHandler(w http.ResponseWriter, r *http.Request) { 13 w.Header().Set("Content-Type", "application/xml") 14 15 var xml bytes.Buffer 16 xml.WriteString(`<?xml version="1.0" encoding="UTF-8"?> 17 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">`) 18 19 blogs, _ := content.LoadBlogs() 20 projects, _ := content.LoadProjects(h.gitService) 21 experience := config.GetExperience() 22 23 routes := []string{"/", "/projects", "/experience", "/blog"} 24 for _, route := range routes { 25 fmt.Fprintf(&xml, "<url><loc>%s%s</loc></url>", config.SiteURL, route) 26 } 27 28 for _, p := range projects { 29 fmt.Fprintf(&xml, "<url><loc>%s/projects/%s</loc></url>", config.SiteURL, p.ID) 30 } 31 32 for _, exp := range experience { 33 fmt.Fprintf(&xml, "<url><loc>%s/experience/%s</loc></url>", config.SiteURL, exp.ID) 34 } 35 36 for _, b := range blogs { 37 fmt.Fprintf(&xml, "<url><loc>%s/blog/%s</loc></url>", config.SiteURL, b.ID) 38 } 39 40 xml.WriteString("</urlset>") 41 _, _ = w.Write(xml.Bytes()) 42 }