From 5b3f0f96b7e345a82f0d963ddef1dd4569465145 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Sun, 9 Jan 2022 22:14:56 +0100 Subject: Support sending cookies in a http request. --- internal/feed/feed.go | 1 + internal/http/client.go | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/internal/feed/feed.go b/internal/feed/feed.go index ffe831f..f31de65 100644 --- a/internal/feed/feed.go +++ b/internal/feed/feed.go @@ -38,6 +38,7 @@ func (feed *Feed) Context() http.Context { return http.Context{ Timeout: feed.Global.Timeout, DisableTLS: feed.NoTLS, + Cookies: feed.Cookies, } } diff --git a/internal/http/client.go b/internal/http/client.go index 17eb0cc..4272a5b 100644 --- a/internal/http/client.go +++ b/internal/http/client.go @@ -23,6 +23,7 @@ type Error struct { type Context struct { Timeout int DisableTLS bool + Cookies []Cookie } func (err Error) Error() string { @@ -53,6 +54,11 @@ func client(disableTLS bool) *http.Client { var noop ctxt.CancelFunc = func() {} +type Cookie struct { + Name string + Value string +} + func Get(url string, ctx Context) (resp *http.Response, cancel ctxt.CancelFunc, err error) { prematureExit := true stdCtx, ctxCancel := ctx.StdContext() @@ -76,6 +82,11 @@ func Get(url string, ctx Context) (resp *http.Response, cancel ctxt.CancelFunc, } req.Header.Set("User-Agent", "Feed2Imap-Go/1.0") + for _, c := range ctx.Cookies { + cookie := http.Cookie{Name: c.Name, Value: c.Value} + req.AddCookie(&cookie) + } + resp, err = client(ctx.DisableTLS).Do(req) if err != nil { return nil, noop, err -- cgit v1.2.3-54-g00ecf