diff options
Diffstat (limited to 'cmd/web/delete.go')
| -rw-r--r-- | cmd/web/delete.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cmd/web/delete.go b/cmd/web/delete.go new file mode 100644 index 0000000..7188b45 --- /dev/null +++ b/cmd/web/delete.go @@ -0,0 +1,42 @@ +package main + +import ( + "fmt" + "net/http" +) + +func gameDelete(w http.ResponseWriter, r *http.Request) { + err := r.ParseForm() + if err != nil { + Logger.Printf("Installer: While parsing form: %s", err) + http.Error(w, fmt.Sprintf("Invalid form: %s", err), 400) + return + } + + game := r.PostForm.Get("name") + + if game == "" { + Logger.Println("Deleter: No game specified") + http.Error(w, "Game param required", 400) + return + } + + libMu.RLock() + g, ok := Lib.Games[game] + libMu.RUnlock() + if !ok { + Logger.Printf("Missing: %s", game) + http.Error(w, "Game is missing", 404) + return + } + + err = g.Delete() + if err != nil { + Logger.Printf("Error removing game: %s", err) + http.Error(w, fmt.Sprintf("Error removing game: %s", err), 500) + return + } + + reloadLib() + http.Redirect(w, r, "/", 302) +} |
