summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Ilvokhin <d@ilvokhin.com>2025-03-09 12:27:09 +0000
committerDmitry Ilvokhin <d@ilvokhin.com>2025-03-09 12:27:09 +0000
commitbf15c1bf65c0a340e38b953b4964aaf8beeb25c4 (patch)
tree2a2ad4f3d4855662abd5cc91a7b0711a3ea53f2b
parentcf505d7ea6e3ef1e42613d3a7ed11ab10c737b24 (diff)
downloadflatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.tar.gz
flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.tar.bz2
flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.zip
Trim state file to prevent unbounded grow
-rw-r--r--flatbot.go18
1 files changed, 10 insertions, 8 deletions
diff --git a/flatbot.go b/flatbot.go
index 0a0e751..fdf7487 100644
--- a/flatbot.go
+++ b/flatbot.go
@@ -76,27 +76,29 @@ func loopOnce() error {
if err != nil {
return err
}
+ fetched := make([]flat, 0)
for _, url := range flag.Args() {
- sent, err = doOneURL(url, sent)
+ sent, fetched, err = doOneURL(url, sent, fetched)
if err != nil {
log.Print(err)
continue
}
}
- // TODO: trim sent file here?
+ sent = removeDelisted(sent, fetched)
return writeSent(sent, *state)
}
-func doOneURL(url string, sent []flat) ([]flat, error) {
+func doOneURL(url string, sent, fetched []flat) ([]flat, []flat, error) {
body, err := fetch(url)
if err != nil {
- return sent, err
+ return sent, fetched, err
}
- fetched, err := parse(body)
+ parsed, err := parse(body)
if err != nil {
- return sent, err
+ return sent, fetched, err
}
- newFlats := removeAlreadySent(fetched, sent)
+ fetched = append(fetched, parsed...)
+ newFlats := removeAlreadySent(parsed, sent)
m := messenger{
Token: *apiToken,
ChatID: *chatID,
@@ -113,7 +115,7 @@ func doOneURL(url string, sent []flat) ([]flat, error) {
f.Price, f.URL())
sent = append(sent, f)
}
- return sent, nil
+ return sent, fetched, nil
}
func fetch(url string) ([]byte, error) {