Browse Source

lints now!

master
Jeffrey Paul 1 year ago
parent
commit
2c5f901b08
  1. 3
      .golangci.yml
  2. 68
      hp/detector.go
  3. 15
      hp/historyposter.go
  4. 4
      store/store.go

3
.golangci.yml

@ -132,6 +132,9 @@ issues:
- linters:
- gocritic
text: "unnecessaryDefer:"
- linters:
- gocritic
text: "commentedOutCode:"
run:
skip-dirs:

68
hp/detector.go

@ -9,12 +9,13 @@ import (
"time"
"git.eeqj.de/sneak/goutil"
"github.com/k0kubun/pp"
// db driver:
_ "github.com/mattn/go-sqlite3"
"github.com/rs/zerolog/log"
)
func (hp *HistoryPoster) postUrls(ctx context.Context, cancel context.CancelFunc) {
func (hp *HistoryPoster) postURLs(ctx context.Context, cancel context.CancelFunc) {
log.Info().Msg("finding history files")
files, err := findHistoryFiles()
if err != nil {
@ -30,40 +31,39 @@ func (hp *HistoryPoster) postUrls(ctx context.Context, cancel context.CancelFunc
hp.shutdown(err.Error(), -1)
}
for _, hitem := range hl {
hp.processUrlFromHistory(hitem)
hp.processURLFromHistory(hitem)
}
}
}
func (hp *HistoryPoster) processUrlFromHistory(hi historyItem) {
func (hp *HistoryPoster) processURLFromHistory(hi historyItem) {
log.Debug().
Str("url", hi.url).
Str("url", hi.URL).
Msg("got url to process")
if hp.store.UrlAlreadySeen(hi.url) {
if hp.store.URLAlreadySeen(hi.URL) {
return
}
log.Debug().
Str("url", hi.url).
Str("url", hi.URL).
Msg("url is new, must be posted")
err := hp.postUrl(hi)
err := hp.postURL(hi)
if err != nil {
log.Error().
Err(err).
Msg("url could not be posted :(")
} else {
hp.store.MarkUrlSeen(hi.url)
hp.store.MarkURLSeen(hi.URL)
}
}
func (hp *HistoryPoster) postUrl(hi historyItem) error {
func (hp *HistoryPoster) postURL(hi historyItem) error {
// FIXME
//panic("unimplemented")
// panic("unimplemented")
return nil
}
func findHistoryFiles() ([]string, error) {
//FIXME make this support safari one day
// FIXME make this support safari one day
home := os.Getenv("HOME")
chromeDir := home + "/Library/Application Support/Google/Chrome"
defaultProfileDir := chromeDir + "/Default"
@ -81,10 +81,10 @@ func findHistoryFiles() ([]string, error) {
}
type historyItem struct {
last_visit_time time.Time
url string
title string
visit_count int
lastVisitTime time.Time
URL string
title string
visitCount int
}
func dumpHistoryFromChromeHistoryFile(path string) ([]historyItem, error) {
@ -98,7 +98,15 @@ func dumpHistoryFromChromeHistoryFile(path string) ([]historyItem, error) {
Msg("created tempdir")
dbfn := tempdir + "/History"
goutil.CopyFile(path, dbfn)
err = goutil.CopyFile(path, dbfn)
if err != nil {
log.Error().
Str("source", path).
Str("target", dbfn).
Err(err).
Msg("unable to copy history file")
return nil, err
}
log.Debug().
Str("dbfn", dbfn).
Msg("copied history file")
@ -145,30 +153,34 @@ func dumpHistoryFromChromeHistoryFile(path string) ([]historyItem, error) {
return nil, err
}
if rows.Err() != nil {
return nil, rows.Err()
}
defer rows.Close()
output := make([]historyItem, 0)
for rows.Next() {
//log.Debug().Msg("processing row")
var last_visit_time int64
// log.Debug().Msg("processing row")
var lastVisitTime int64
var url string
var title string
var visit_count int
err := rows.Scan(&last_visit_time, &url, &title, &visit_count)
var visitCount int
err := rows.Scan(&lastVisitTime, &url, &title, &visitCount)
if err != nil {
log.Debug().Err(err).Msg("row error")
return nil, err
}
t := goutil.TimeFromWebKit(last_visit_time).UTC()
t := goutil.TimeFromWebKit(lastVisitTime).UTC()
hi := historyItem{
last_visit_time: t,
url: url,
title: title,
visit_count: visit_count,
lastVisitTime: t,
URL: url,
title: title,
visitCount: visitCount,
}
output = append(output, hi)
}
pp.Print(output)
// pp.Print(output)
return output, nil
}

15
hp/historyposter.go

@ -25,7 +25,6 @@ type HistoryPoster struct {
startup time.Time
appCtx context.Context
shutdownFunc context.CancelFunc
newUrlChan chan string
exitCode int
store *store.Store
logfh *os.File
@ -38,7 +37,6 @@ func CLIEntry(version, buildarch string) int {
hp.buildarch = buildarch
hp.startup = time.Now()
hp.exitCode = 0
hp.newUrlChan = make(chan string)
c := make(chan os.Signal)
signal.Ignore(syscall.SIGPIPE)
@ -47,12 +45,12 @@ func CLIEntry(version, buildarch string) int {
hp.configure()
hp.setupLogging()
store, err := store.NewStore()
s, err := store.NewStore()
if err != nil {
hp.shutdown("cannot create state file: "+err.Error(), -1)
return hp.exitCode
}
hp.store = store
hp.store = s
hp.appCtx, hp.shutdownFunc = context.WithCancel(context.Background())
go func() {
@ -86,13 +84,12 @@ func (hp *HistoryPoster) configure() {
}
}
//if viper.GetBool("debug") {
// if viper.GetBool("debug") {
// pp.Print(viper.AllSettings())
//}
// }
}
func (hp *HistoryPoster) runForever(ctx context.Context) int {
log.Info().Msg("entering main loop")
interval := 60 * time.Second
@ -101,13 +98,13 @@ func (hp *HistoryPoster) runForever(ctx context.Context) int {
ticker := time.NewTicker(interval)
go func() {
// do it once right now, without an insta-tick
go func() { hp.postUrls(context.WithTimeout(ctx, timeout)) }()
go func() { hp.postURLs(context.WithTimeout(ctx, timeout)) }()
// then go do it repeatedly:
for {
select {
case <-ticker.C:
go func() { hp.postUrls(context.WithTimeout(ctx, timeout)) }()
go func() { hp.postURLs(context.WithTimeout(ctx, timeout)) }()
case <-ctx.Done():
ticker.Stop()
return

4
store/store.go

@ -62,7 +62,7 @@ func (s *Store) Close() {
s.db.Close()
}
func (s *Store) MarkUrlSeen(url string) {
func (s *Store) MarkURLSeen(url string) {
q := fmt.Sprintf(`INSERT into %s (url, posted) VALUES (?, date('now'));`, tablename)
_, err := s.db.Exec(q, url)
if err != nil {
@ -75,7 +75,7 @@ func (s *Store) MarkUrlSeen(url string) {
Msg("url added to db")
}
func (s *Store) UrlAlreadySeen(url string) bool {
func (s *Store) URLAlreadySeen(url string) bool {
q := fmt.Sprintf(`select id from %s where url = ?;`, tablename)
row := s.db.QueryRow(q, url)

Loading…
Cancel
Save