diff options
Diffstat (limited to 'cmd/web/main.go')
| -rw-r--r-- | cmd/web/main.go | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/cmd/web/main.go b/cmd/web/main.go index f5365d0..6bf0a5d 100644 --- a/cmd/web/main.go +++ b/cmd/web/main.go @@ -23,19 +23,41 @@ var ( ) func reloadLib() { + Logger.Println("Starting library reload") libMu.Lock() defer libMu.Unlock() var err error - Lib, err = steam.NewLibrary(DefaultLib) + l2, err := steam.NewLibrary(DefaultLib) if err != nil { Logger.Printf("Error reopening library: %s", err) return } + Lib = l2 + Logger.Println("Done reloading library") +} + +func setLibHandler(w http.ResponseWriter, r *http.Request) { + err := r.ParseForm() + if err != nil { + Logger.Printf("Setlib: While parsing form: %s", err) + http.Error(w, fmt.Sprintf("Invalid form: %s", err), 400) + return + } + + DefaultLib = r.Form.Get("path") + reloadLib() + http.Redirect(w, r, "/", 302) } func quitHandler(w http.ResponseWriter, r *http.Request) { Logger.Println("Quit was called, exiting") - os.Exit(0) + w.Header().Add("Content-type", "text/plain") + w.Write([]byte("Shutting down...")) + go func() { + time.Sleep(time.Second*2) + os.Exit(0) + }() + return } func main() { @@ -60,6 +82,7 @@ func main() { r := mux.NewRouter() r.HandleFunc("/quit", quitHandler) + r.HandleFunc("/setLib", setLibHandler) r.HandleFunc("/delete", gameDelete) r.HandleFunc("/install", gameInstaller) r.HandleFunc("/download/{game}", gameDownloader) |
