package main import ( "net/http" "time" "github.com/araddon/dateparse" "github.com/snabb/sitemap" ) const sitemapPath = "/sitemap.xml" func serveSitemap(w http.ResponseWriter, r *http.Request) { posts, err := getPosts(&postsRequestConfig{ status: statusPublished, }) if err != nil { serveError(w, r, err.Error(), http.StatusInternalServerError) return } sm := sitemap.New() sm.Minify = true for _, p := range posts { item := &sitemap.URL{ Loc: p.fullURL()} var lastMod time.Time if p.Updated != "" { lastMod, _ = dateparse.ParseLocal(p.Updated) } if p.Published != "" && lastMod.IsZero() { lastMod, _ = dateparse.ParseLocal(p.Published) } if !lastMod.IsZero() { item.LastMod = &lastMod } sm.Add(item) } _, _ = sm.WriteTo(w) }