diff options
Diffstat (limited to 'cmd/web/app.go')
| -rw-r--r-- | cmd/web/app.go | 75 |
1 files changed, 75 insertions, 0 deletions
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 +} + |
