aboutsummaryrefslogtreecommitdiff
path: root/internal/feed
diff options
context:
space:
mode:
Diffstat (limited to 'internal/feed')
-rw-r--r--internal/feed/feed.go8
-rw-r--r--internal/feed/mail.go6
-rw-r--r--internal/feed/parse.go4
3 files changed, 13 insertions, 5 deletions
diff --git a/internal/feed/feed.go b/internal/feed/feed.go
index 0741e8c..ffe831f 100644
--- a/internal/feed/feed.go
+++ b/internal/feed/feed.go
@@ -9,6 +9,7 @@ import (
"github.com/Necoro/gofeed"
"github.com/Necoro/feed2imap-go/internal/feed/filter"
+ "github.com/Necoro/feed2imap-go/internal/http"
"github.com/Necoro/feed2imap-go/pkg/config"
"github.com/Necoro/feed2imap-go/pkg/log"
)
@@ -33,6 +34,13 @@ type Descriptor struct {
Url string
}
+func (feed *Feed) Context() http.Context {
+ return http.Context{
+ Timeout: feed.Global.Timeout,
+ DisableTLS: feed.NoTLS,
+ }
+}
+
func (feed *Feed) Descriptor() Descriptor {
var url string
if feed.Url != "" {
diff --git a/internal/feed/mail.go b/internal/feed/mail.go
index 6914b76..444f76a 100644
--- a/internal/feed/mail.go
+++ b/internal/feed/mail.go
@@ -226,8 +226,8 @@ func (feed *Feed) Messages() (msg.Messages, error) {
return mails, nil
}
-func getImage(src string, timeout int, disableTLS bool) ([]byte, string, error) {
- resp, cancel, err := http.Get(src, timeout, disableTLS)
+func getImage(src string, ctx http.Context) ([]byte, string, error) {
+ resp, cancel, err := http.Get(src, ctx)
if err != nil {
return nil, "", fmt.Errorf("fetching from '%s': %w", src, err)
}
@@ -294,7 +294,7 @@ func (item *Item) downloadImage(src string) string {
imgUrl := item.resolveUrl(src)
- img, mime, err := getImage(imgUrl, feed.Global.Timeout, feed.NoTLS)
+ img, mime, err := getImage(imgUrl, feed.Context())
if err != nil {
log.Errorf("Feed %s: Item %s: Error fetching image: %s",
feed.Name, item.Link, err)
diff --git a/internal/feed/parse.go b/internal/feed/parse.go
index 520def8..a471b2d 100644
--- a/internal/feed/parse.go
+++ b/internal/feed/parse.go
@@ -20,7 +20,7 @@ func (feed *Feed) Parse() error {
if feed.Url != "" {
// we do not use the http support in gofeed, so that we can control the behavior of http requests
// and ensure it to be the same in all places
- resp, cancel, err := http.Get(feed.Url, feed.Global.Timeout, feed.NoTLS)
+ resp, cancel, err := http.Get(feed.Url, feed.Context())
if err != nil {
return fmt.Errorf("while fetching %s from %s: %w", feed.Name, feed.Url, err)
}
@@ -30,7 +30,7 @@ func (feed *Feed) Parse() error {
cleanup = func() error { return nil }
} else { // exec
// we use the same context as for HTTP
- ctx, cancel := http.Context(feed.Global.Timeout)
+ ctx, cancel := feed.Context().StdContext()
cmd := exec.CommandContext(ctx, feed.Exec[0], feed.Exec[1:]...)
defer func() {
cancel()