sitemap.go (991B)
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 projects, _ := content.LoadProjects(h.gitService) 20 experience := config.GetExperience() 21 22 routes := []string{"/", "/experience", "/projects"} 23 for _, route := range routes { 24 fmt.Fprintf(&xml, "<url><loc>%s%s</loc></url>", config.SiteURL, route) 25 } 26 27 for _, p := range projects { 28 fmt.Fprintf(&xml, "<url><loc>%s/projects/%s</loc></url>", config.SiteURL, p.ID) 29 } 30 31 for _, exp := range experience { 32 fmt.Fprintf(&xml, "<url><loc>%s/experience/%s</loc></url>", config.SiteURL, exp.ID) 33 } 34 35 xml.WriteString("</urlset>") 36 _, _ = w.Write(xml.Bytes()) 37 }