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)
}
