From b9bb17044a8c2b47c7e96660e27ab645f82bec9d Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Thu, 4 Mar 2021 19:44:02 -0500 Subject: Further refactoring. --- cmd/web/app.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 cmd/web/app.go (limited to 'cmd/web/app.go') diff --git a/cmd/web/app.go b/cmd/web/app.go new file mode 100644 index 0000000..8f6df89 --- /dev/null +++ b/cmd/web/app.go @@ -0,0 +1,75 @@ +package main + +import ( + "sync" + "html/template" + "time" + + "riedstra.dev/mitch/steam-export/steam" +) + +type steamLib struct { + steam.Library + sync.Mutex +} + +type statusInfo struct { + sync.RWMutex + Running bool + Error error + Url string + Transferred int64 + Size int64 + Start *time.Time +} + + +type App struct { + Library *steamLib + Status *statusInfo + + Templates *template.Template + + // Sending to this channel triggers the downloader in the background + download chan string +} + +func NewApp(libPath string) (*App, error) { + lib, err := steam.NewLibrary(libPath) + if err != nil { + return nil, err + } + + a := &App{ + Library: &steamLib{}, + Status: &statusInfo{}, + download: make(chan string), + } + + a.Library.Library = *lib + + a.Templates = template.Must(template.New("index").Parse(indexTemplate)) + + return a, nil +} + +func (a *App) LibrarySet(path string) { + Logger.Println("Starting library reload") + a.Library.Lock() + defer a.Library.Unlock() + var err error + l2, err := steam.NewLibrary(path) + if err != nil { + Logger.Printf("Error reopening lib: %s", err) + return + } + a.Library.Library = *l2 + Logger.Println("Done reloading lib") +} + +func (a *App) LibraryReload() { + cur := a.Library.Folder + a.LibrarySet(cur) + return +} + -- cgit v1.2.3