diff --git a/internal/imgcache/fetcher.go b/internal/imgcache/fetcher.go index cfc1e7d..dd9f75e 100644 --- a/internal/imgcache/fetcher.go +++ b/internal/imgcache/fetcher.go @@ -13,12 +13,12 @@ import ( // Fetcher configuration constants. const ( - DefaultFetchTimeout = 30 * time.Second - DefaultMaxResponseSize = 50 << 20 // 50MB - DefaultTLSTimeout = 10 * time.Second - DefaultMaxIdleConns = 100 - DefaultIdleConnTimeout = 90 * time.Second - DefaultMaxRedirects = 10 + DefaultFetchTimeout = 30 * time.Second + DefaultMaxResponseSize = 50 << 20 // 50MB + DefaultTLSTimeout = 10 * time.Second + DefaultMaxIdleConns = 100 + DefaultIdleConnTimeout = 90 * time.Second + DefaultMaxRedirects = 10 ) // Fetcher errors. @@ -148,7 +148,7 @@ func (f *HTTPFetcher) Fetch(ctx context.Context, url string) (*FetchResult, erro // Wrap body with size limiter limitedBody := &limitedReader{ - reader: resp.Body, + reader: resp.Body, remaining: f.config.MaxResponseSize, } diff --git a/internal/imgcache/signature_test.go b/internal/imgcache/signature_test.go index 46ea58a..ee6f99e 100644 --- a/internal/imgcache/signature_test.go +++ b/internal/imgcache/signature_test.go @@ -58,11 +58,11 @@ func TestSigner_Verify(t *testing.T) { name: "valid signature", setup: func() *ImageRequest { req := &ImageRequest{ - SourceHost: "cdn.example.com", - SourcePath: "/photos/cat.jpg", - Size: Size{Width: 800, Height: 600}, - Format: FormatWebP, - Expires: time.Now().Add(1 * time.Hour), + SourceHost: "cdn.example.com", + SourcePath: "/photos/cat.jpg", + Size: Size{Width: 800, Height: 600}, + Format: FormatWebP, + Expires: time.Now().Add(1 * time.Hour), } req.Signature = signer.Sign(req) @@ -74,11 +74,11 @@ func TestSigner_Verify(t *testing.T) { name: "expired signature", setup: func() *ImageRequest { req := &ImageRequest{ - SourceHost: "cdn.example.com", - SourcePath: "/photos/cat.jpg", - Size: Size{Width: 800, Height: 600}, - Format: FormatWebP, - Expires: time.Now().Add(-1 * time.Hour), // Expired + SourceHost: "cdn.example.com", + SourcePath: "/photos/cat.jpg", + Size: Size{Width: 800, Height: 600}, + Format: FormatWebP, + Expires: time.Now().Add(-1 * time.Hour), // Expired } req.Signature = signer.Sign(req) @@ -90,12 +90,12 @@ func TestSigner_Verify(t *testing.T) { name: "invalid signature", setup: func() *ImageRequest { return &ImageRequest{ - SourceHost: "cdn.example.com", - SourcePath: "/photos/cat.jpg", - Size: Size{Width: 800, Height: 600}, - Format: FormatWebP, - Expires: time.Now().Add(1 * time.Hour), - Signature: "invalid-signature", + SourceHost: "cdn.example.com", + SourcePath: "/photos/cat.jpg", + Size: Size{Width: 800, Height: 600}, + Format: FormatWebP, + Expires: time.Now().Add(1 * time.Hour), + Signature: "invalid-signature", } }, wantErr: ErrSignatureInvalid, @@ -118,11 +118,11 @@ func TestSigner_Verify(t *testing.T) { name: "tampered request", setup: func() *ImageRequest { req := &ImageRequest{ - SourceHost: "cdn.example.com", - SourcePath: "/photos/cat.jpg", - Size: Size{Width: 800, Height: 600}, - Format: FormatWebP, - Expires: time.Now().Add(1 * time.Hour), + SourceHost: "cdn.example.com", + SourcePath: "/photos/cat.jpg", + Size: Size{Width: 800, Height: 600}, + Format: FormatWebP, + Expires: time.Now().Add(1 * time.Hour), } req.Signature = signer.Sign(req) // Tamper with the request @@ -157,11 +157,11 @@ func TestSigner_DifferentKeys(t *testing.T) { signer2 := NewSigner("secret-key-2") req := &ImageRequest{ - SourceHost: "cdn.example.com", - SourcePath: "/photos/cat.jpg", - Size: Size{Width: 800, Height: 600}, - Format: FormatWebP, - Expires: time.Now().Add(1 * time.Hour), + SourceHost: "cdn.example.com", + SourcePath: "/photos/cat.jpg", + Size: Size{Width: 800, Height: 600}, + Format: FormatWebP, + Expires: time.Now().Add(1 * time.Hour), } // Sign with key 1