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.go71
1 files changed, 25 insertions, 46 deletions
diff --git a/cmd/web/main.go b/cmd/web/main.go
index 93025e5..64321da 100644
--- a/cmd/web/main.go
+++ b/cmd/web/main.go
@@ -5,7 +5,7 @@ import (
"log"
"net/http"
"os"
- "path/filepath"
+ "sync"
"github.com/gorilla/mux"
"riedstra.dev/mitch/steam-export/steam"
@@ -15,75 +15,54 @@ var (
Logger = log.New(os.Stderr, "", log.LstdFlags)
Listen = ":8899"
- Lib = steam.NewLibraryMust(DefaultLib)
+ libMu = &sync.RWMutex{}
+ Lib *steam.Library
)
-//size, err := estimateSize(g.LibraryPath + "common/" + g.Name)
-//if err != nil {
-// http.Error(w, "Encountered:"+err, 500)
-// return
-//}
-func estimateSize(pth string) (int64, error) {
- var size int64 = 0
-
- err := filepath.Walk(pth, func(path string, info os.FileInfo, err error) error {
-
- if err != nil {
- return err
- }
-
- if info.Mode().IsRegular() {
- size = size + info.Size()
- }
-
- return nil
- })
-
- return size, err
-
-}
-
-func gameDownloader(w http.ResponseWriter, r *http.Request) {
- vars := mux.Vars(r)
- game := vars["game"]
-
- g, ok := Lib.Games[game]
- if !ok {
- Logger.Printf("Missing: %s", game)
- http.Error(w, "Game is missing", 404)
- return
- }
-
- w.Header().Add("Content-type", "application/tar")
-
- err := g.Package(w)
+func reloadLib() {
+ libMu.Lock()
+ defer libMu.Unlock()
+ var err error
+ Lib, err = steam.NewLibrary(DefaultLib)
if err != nil {
- Logger.Printf("Error Sending game: %s", err)
- // Headers already sent, don't bother sending an error
+ Logger.Printf("Error reopening library: %s", err)
+ return
}
-
}
func main() {
fl := flag.NewFlagSet("steam-export", flag.ExitOnError)
debug := fl.Bool("d", false, "Print line numbers in log")
- listen := fl.String("l", Listen, "What address do we listen on?")
+ fl.StringVar(&Listen, "l", Listen, "What address do we listen on?")
+ fl.StringVar(&DefaultLib, "L", DefaultLib, "Full path to default library")
fl.Parse(os.Args[1:])
if *debug {
Logger.SetFlags(log.LstdFlags | log.Llongfile)
}
+ var err error
+ Lib, err = steam.NewLibrary(DefaultLib)
+ if err != nil {
+ Logger.Fatalf("While opening library path: %s", err)
+ }
+
+ go installer(getPath)
+
r := mux.NewRouter()
+ r.HandleFunc("/delete", gameDelete)
+ r.HandleFunc("/install", gameInstaller)
r.HandleFunc("/download/{game}", gameDownloader)
r.HandleFunc("/style.css", cssHandler)
r.HandleFunc("/", index)
s := http.Server{
Handler: r,
- Addr: *listen,
+ Addr: Listen,
}
+ go startBrowser()
+
Logger.Fatal(s.ListenAndServe())
}