prime8dev

prime8dev
git clone https://git.prime8.dev/prime8dev.git
Log | Files | Refs | README | LICENSE

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 }