aboutsummaryrefslogtreecommitdiff
path: root/cmd/web/main.go
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2020-11-21 16:44:48 -0500
committerMitch Riedstra <mitch@riedstra.us>2020-11-21 16:44:48 -0500
commit3e1b39031437eaf48c5c6ea895dd632b1249b0a2 (patch)
tree3b778d03d074b3798a4c53bbf19b1b0be389260d /cmd/web/main.go
parent415c4a1a48502ae5180c48188c8f2e94d9c9d92c (diff)
downloadsteam-export-3e1b39031437eaf48c5c6ea895dd632b1249b0a2.tar.gz
steam-export-3e1b39031437eaf48c5c6ea895dd632b1249b0a2.tar.xz
Allow the library to be changed. Fix up quit handler. Improve logging
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)