Files
yoresee_dropbox/internal/app/app.go
T

43 lines
811 B
Go

package app
import (
"log"
"net/http"
"path/filepath"
"time"
"yoresee_dropbox/internal/scanner"
"yoresee_dropbox/internal/server"
"yoresee_dropbox/internal/store"
)
type Config struct {
Addr string
Workspace string
Token string
}
func NewHandler(cfg Config) (http.Handler, *store.Store, error) {
dbPath := filepath.Join(cfg.Workspace, ".ydropbox", "db.sqlite")
s, err := store.Open(dbPath)
if err != nil {
return nil, nil, err
}
sc := scanner.New(s, cfg.Workspace, 10*time.Second)
sc.Start()
srv := server.New(s, cfg.Token, cfg.Workspace)
return srv.Handler(), s, nil
}
func Run(cfg Config) error {
handler, s, err := NewHandler(cfg)
if err != nil {
return err
}
defer s.Close()
log.Printf("Listening on %s", cfg.Addr)
return http.ListenAndServe(cfg.Addr, handler)
}