package main import ( "net/http" "github.com/gorilla/mux" ) func gameDownloader(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) game := vars["game"] libMu.RLock() g, ok := Lib.Games[game] libMu.RUnlock() if !ok { Logger.Printf("Missing: %s", game) http.Error(w, "Game is missing", 404) return } w.Header().Add("Content-type", "application/tar") Logger.Printf("Client %s is downloading: %s", r.RemoteAddr, game) err := g.Package(w) if err != nil { Logger.Printf("Client %s Error Sending game: %s", r.RemoteAddr, err) // Headers already sent, don't bother sending an error return } Logger.Printf("Client %s finished downloading: %s", r.RemoteAddr, game) }