code: func (dh *DownloadHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  	if r.Method == "POST" {
  		dh.serveZip(w, r)
  		return
  	}
  
  	suffix := httputil.PathSuffix(r)
  	m := downloadPattern.FindStringSubmatch(suffix)
  	if m == nil {
  		httputil.ErrorRouting(w, r)
  		return
  	}
  	file, ok := blob.Parse(m[1])
  	if !ok {
  		http.Error(w, "Invalid blobref", http.StatusBadRequest)
  		return
  	}
  	// TODO(mpl): make use of m[2] (the optional filename).
  	dh.ServeFile(w, r, file)
  }
docs: // ServeHTTP answers the following queries:
  //
  // POST:
  //   ?files=sha1-foo,sha1-bar,sha1-baz
  // Creates a zip archive of the provided files and serves it in the response.
  //
  // GET:
  //   /<file-schema-blobref>[?inline=1]
  // Serves the file described by the requested file schema blobref.
  // if inline=1 the Content-Disposition of the response is set to inline, and
  // otherwise it set to attachment.