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