github.com/bitcubate/cryptojournal@v1.2.5-0.20171102134152-f578b3d788ab/src/stories/actions/sitemap.go (about)

     1  package storyactions
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/fragmenta/server"
     7  	"github.com/fragmenta/view"
     8  
     9  	"github.com/bitcubate/cryptojournal/src/stories"
    10  )
    11  
    12  // HandleSiteMap renders a site map of top stories
    13  func HandleSiteMap(w http.ResponseWriter, r *http.Request) error {
    14  
    15  	// Build a query
    16  	q := stories.Query().Limit(5000)
    17  
    18  	// Select only above 0 points,  Order by points, then id
    19  	q.Where("points > 0").Order("points desc, id desc")
    20  
    21  	// Fetch the stories
    22  	results, err := stories.FindAll(q)
    23  	if err != nil {
    24  		return server.InternalError(err)
    25  	}
    26  
    27  	// Render the template
    28  	view := view.NewRenderer(w, r)
    29  	view.Layout("")
    30  	view.Template("stories/views/sitemap.xml.got")
    31  	view.AddKey("stories", results)
    32  	view.AddKey("pubdate", storiesModTime(results))
    33  	return view.Render()
    34  }