aboutsummaryrefslogtreecommitdiff
path: root/cmd/web/delete.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/web/delete.go')
-rw-r--r--cmd/web/delete.go42
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)
+}