aboutsummaryrefslogtreecommitdiff
path: root/internal/http/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/http/client.go')
-rw-r--r--internal/http/client.go17
1 files changed, 11 insertions, 6 deletions
diff --git a/internal/http/client.go b/internal/http/client.go
index 230c333..17eb0cc 100644
--- a/internal/http/client.go
+++ b/internal/http/client.go
@@ -20,6 +20,11 @@ type Error struct {
Status string
}
+type Context struct {
+ Timeout int
+ DisableTLS bool
+}
+
func (err Error) Error() string {
return fmt.Sprintf("http error: %s", err.Status)
}
@@ -35,8 +40,8 @@ func init() {
unsafeClient = &http.Client{Transport: transport}
}
-func Context(timeout int) (ctxt.Context, ctxt.CancelFunc) {
- return ctxt.WithTimeout(ctxt.Background(), time.Duration(timeout)*time.Second)
+func (ctx Context) StdContext() (ctxt.Context, ctxt.CancelFunc) {
+ return ctxt.WithTimeout(ctxt.Background(), time.Duration(ctx.Timeout)*time.Second)
}
func client(disableTLS bool) *http.Client {
@@ -48,9 +53,9 @@ func client(disableTLS bool) *http.Client {
var noop ctxt.CancelFunc = func() {}
-func Get(url string, timeout int, disableTLS bool) (resp *http.Response, cancel ctxt.CancelFunc, err error) {
+func Get(url string, ctx Context) (resp *http.Response, cancel ctxt.CancelFunc, err error) {
prematureExit := true
- ctx, ctxCancel := Context(timeout)
+ stdCtx, ctxCancel := ctx.StdContext()
cancel = func() {
if resp != nil {
@@ -65,13 +70,13 @@ func Get(url string, timeout int, disableTLS bool) (resp *http.Response, cancel
}
}()
- req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
+ req, err := http.NewRequestWithContext(stdCtx, "GET", url, nil)
if err != nil {
return nil, noop, err
}
req.Header.Set("User-Agent", "Feed2Imap-Go/1.0")
- resp, err = client(disableTLS).Do(req)
+ resp, err = client(ctx.DisableTLS).Do(req)
if err != nil {
return nil, noop, err
}