blob: 021a4871b6550674215bc9671632e3051ef66cd1 [file] [log] [blame]
// +build ignore,OMIT
package download
func (s *Server) handleDownload(w http.ResponseWriter, r *http.Request) {
s.addActiveDownloadTotal(1)
defer s.addActiveDownloadTotal(-1)
if !isGetOrHead(w, r) {
return
}
uctx, err := s.newUserContext(r)
// ...
pl, cacheable, err := s.chooseValidPayloadToDownload(uctx)
// ...
content, err := pl.content()
// ...
defer content.Close()
w.Header().Set("Content-Type", pl.mimeType())
if etag := pl.etag(); etag != "" {
w.Header().Set("Etag", strconv.Quote(etag))
}
if cacheable {
w.Header().Set("Expires", pl.expirationTime())
}
readSeeker := io.NewSectionReader(content, 0, content.Size())
http.ServeContent(w, r, "", pl.lastModifiedTime(), readSeeker)
}