aboutsummaryrefslogtreecommitdiff
path: root/internal/feed/parse.go
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-23 23:48:09 +0200
committerRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-23 23:48:09 +0200
commit8467dbb9bd9960191f16def3ba43dcbde0fdda14 (patch)
tree5af73797e16dfee0a49de72e122c570053988e51 /internal/feed/parse.go
parent6911562cf4214531343b7509afe77e38b28a0801 (diff)
downloadfeed2imap-go-8467dbb9bd9960191f16def3ba43dcbde0fdda14.tar.gz
feed2imap-go-8467dbb9bd9960191f16def3ba43dcbde0fdda14.tar.bz2
feed2imap-go-8467dbb9bd9960191f16def3ba43dcbde0fdda14.zip
Notify about the number of successfully fetched feeds.
Diffstat (limited to '')
-rw-r--r--internal/feed/parse.go24
1 files changed, 19 insertions, 5 deletions
diff --git a/internal/feed/parse.go b/internal/feed/parse.go
index 22d16f2..35a7596 100644
--- a/internal/feed/parse.go
+++ b/internal/feed/parse.go
@@ -32,22 +32,36 @@ func parseFeed(feed *Feed) error {
return nil
}
-func handleFeed(feed *Feed, wg *sync.WaitGroup) {
- defer wg.Done()
+func handleFeed(feed *Feed, group *sync.WaitGroup, success chan<- bool) {
+ defer group.Done()
log.Printf("Fetching %s from %s", feed.Name, feed.Url)
- if err := parseFeed(feed); err != nil {
+ err := parseFeed(feed)
+ if err != nil {
log.Error(err)
}
+ success <- err == nil
}
-func Parse(feeds Feeds) {
+func Parse(feeds Feeds) int {
var wg sync.WaitGroup
wg.Add(len(feeds))
+ success := make(chan bool, len(feeds))
+
for _, feed := range feeds {
- go handleFeed(feed, &wg)
+ go handleFeed(feed, &wg, success)
}
wg.Wait()
+ close(success)
+
+ ctr := 0
+ for s := range success {
+ if s {
+ ctr++
+ }
+ }
+
+ return ctr
}