aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-03 23:53:52 +0900
committerOphestra <cat@gensokyo.uk>2026-01-03 23:53:52 +0900
commit05202cf99481e4b005d766a1a5fdec5d2889396b (patch)
tree3bf5e8ebaf985cccb867e63e5e52c2a9209597bf
parent40081e7a0694db0ebe2b59e7545ecc43128c8f40 (diff)
internal/pkg: pass context in request wrapper
This method is for the most common use case, and in actual use there will always be an associated context. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/pkg/net.go10
-rw-r--r--internal/pkg/net_test.go49
2 files changed, 50 insertions, 9 deletions
diff --git a/internal/pkg/net.go b/internal/pkg/net.go
index 519a9b0f..09ad7fa0 100644
--- a/internal/pkg/net.go
+++ b/internal/pkg/net.go
@@ -1,6 +1,7 @@
package pkg
import (
+ "context"
"crypto/sha512"
"errors"
"io"
@@ -45,8 +46,13 @@ func (c *Cache) NewHTTP(hc *http.Client, req *http.Request, checksum Checksum) F
// NewHTTPGet returns a new [File] backed by the supplied client. A GET request
// is set up for url. If c is nil, [http.DefaultClient] is used instead.
-func (c *Cache) NewHTTPGet(hc *http.Client, url string, checksum Checksum) (File, error) {
- req, err := http.NewRequest(http.MethodGet, url, nil)
+func (c *Cache) NewHTTPGet(
+ ctx context.Context,
+ hc *http.Client,
+ url string,
+ checksum Checksum,
+) (File, error) {
+ req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
if err != nil {
return nil, err
}
diff --git a/internal/pkg/net_test.go b/internal/pkg/net_test.go
index 016d0de8..dbd956a1 100644
--- a/internal/pkg/net_test.go
+++ b/internal/pkg/net_test.go
@@ -34,7 +34,12 @@ func TestHTTP(t *testing.T) {
checkWithCache(t, []cacheTestCase{
{"direct", nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
var got []byte
- if f, err := c.NewHTTPGet(&client, "file:///testdata", testdataChecksum); err != nil {
+ if f, err := c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///testdata",
+ testdataChecksum,
+ ); err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
} else if got, err = f.Data(); err != nil {
t.Fatalf("Data: error = %v", err)
@@ -48,7 +53,12 @@ func TestHTTP(t *testing.T) {
wantErrMismatch := &pkg.ChecksumMismatchError{
Got: testdataChecksum,
}
- if f, err := c.NewHTTPGet(&client, "file:///testdata", pkg.Checksum{}); err != nil {
+ if f, err := c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///testdata",
+ pkg.Checksum{},
+ ); err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
} else if _, err = f.Data(); !reflect.DeepEqual(err, wantErrMismatch) {
t.Fatalf("Data: error = %#v, want %#v", err, wantErrMismatch)
@@ -58,7 +68,12 @@ func TestHTTP(t *testing.T) {
// check direct response error
wantErrNotFound := pkg.ResponseStatusError(http.StatusNotFound)
- if f, err := c.NewHTTPGet(&client, "file:///nonexistent", pkg.Checksum{}); err != nil {
+ if f, err := c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///nonexistent",
+ pkg.Checksum{},
+ ); err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
} else if _, err = f.Data(); !reflect.DeepEqual(err, wantErrNotFound) {
t.Fatalf("Data: error = %#v, want %#v", err, wantErrNotFound)
@@ -68,7 +83,12 @@ func TestHTTP(t *testing.T) {
}, pkg.MustDecode("E4vEZKhCcL2gPZ2Tt59FS3lDng-d_2SKa2i5G_RbDfwGn6EemptFaGLPUDiOa94C")},
{"load or store", nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
- f, err := c.NewHTTPGet(&client, "file:///testdata", testdataChecksum)
+ f, err := c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///testdata",
+ testdataChecksum,
+ )
if err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
}
@@ -101,7 +121,12 @@ func TestHTTP(t *testing.T) {
}
// check load from cache
- if f, err = c.NewHTTPGet(&client, "file:///testdata", testdataChecksum); err != nil {
+ if f, err = c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///testdata",
+ testdataChecksum,
+ ); err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
} else if got, err = f.Data(); err != nil {
t.Fatalf("Data: error = %v", err)
@@ -113,7 +138,12 @@ func TestHTTP(t *testing.T) {
// check error passthrough
wantErrNotFound := pkg.ResponseStatusError(http.StatusNotFound)
- if f, err = c.NewHTTPGet(&client, "file:///nonexistent", pkg.Checksum{}); err != nil {
+ if f, err = c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///nonexistent",
+ pkg.Checksum{},
+ ); err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
} else if _, err = f.Pathname(); !reflect.DeepEqual(err, wantErrNotFound) {
t.Fatalf("Pathname: error = %#v, want %#v", err, wantErrNotFound)
@@ -132,7 +162,12 @@ func TestHTTP(t *testing.T) {
"identifier",
testdataChecksumString,
)
- if f, err := c.NewHTTPGet(&client, "file:///testdata", testdataChecksum); err != nil {
+ if f, err := c.NewHTTPGet(
+ t.Context(),
+ &client,
+ "file:///testdata",
+ testdataChecksum,
+ ); err != nil {
t.Fatalf("NewHTTPGet: error = %v", err)
} else if got, err = f.Data(); err != nil {
t.Fatalf("Data: error = %v", err)