From ed6d7976b9f0a9ebf2c50c2306be624fec20997d Mon Sep 17 00:00:00 2001 From: Adrian Shum Date: Mon, 18 Mar 2024 01:13:46 +0800 Subject: [PATCH 1/2] fix: fix override header for processed blob --- imagor.go | 3 +++ imagor_test.go | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/imagor.go b/imagor.go index 2efca4f25..78fac2caf 100644 --- a/imagor.go +++ b/imagor.go @@ -393,6 +393,9 @@ func (app *Imagor) Do(r *http.Request, p imagorpath.Params) (blob *Blob, err err for _, processor := range app.Processors { b, e := checkBlob(processor.Process(ctx, blob, forwardP, load)) if !isBlobEmpty(b) { + if h := blob.Header; h != nil && b.Header == nil { + b.Header = h // forward blob Header + } blob = b // forward Blob to next processor if exists } if e == nil { diff --git a/imagor_test.go b/imagor_test.go index 668556a3c..11c9c48fb 100644 --- a/imagor_test.go +++ b/imagor_test.go @@ -345,13 +345,17 @@ func TestWithOverrideHeader(t *testing.T) { blob.Header.Set("asdf", "fghj") return blob, nil })), + WithProcessors(processorFunc(func(ctx context.Context, blob *Blob, p imagorpath.Params, load LoadFunc) (*Blob, error) { + out := NewBlobFromBytes([]byte("processed")) + out.SetContentType("boom") + return out, nil + })), ) w := httptest.NewRecorder() app.ServeHTTP(w, httptest.NewRequest( - http.MethodGet, "https://example.com/unsafe/filters:fill(red):raw()/gopher.png", nil)) + http.MethodGet, "https://example.com/unsafe/filters:fill(red)/gopher.png", nil)) assert.Equal(t, 200, w.Code) - assert.Equal(t, "foo", w.Body.String()) - assert.Equal(t, "script-src 'none'", w.Header().Get("Content-Security-Policy")) + assert.Equal(t, "processed", w.Body.String()) assert.Equal(t, "tada", w.Header().Get("Content-Type")) assert.Equal(t, "fghj", w.Header().Get("ASDF")) } From bbc24dce08b679d44a198537c440f04c2aaf7fc4 Mon Sep 17 00:00:00 2001 From: Adrian Shum Date: Mon, 18 Mar 2024 01:20:07 +0800 Subject: [PATCH 2/2] fix: fix override header for processed blob --- imagor.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/imagor.go b/imagor.go index 78fac2caf..289691635 100644 --- a/imagor.go +++ b/imagor.go @@ -393,8 +393,8 @@ func (app *Imagor) Do(r *http.Request, p imagorpath.Params) (blob *Blob, err err for _, processor := range app.Processors { b, e := checkBlob(processor.Process(ctx, blob, forwardP, load)) if !isBlobEmpty(b) { - if h := blob.Header; h != nil && b.Header == nil { - b.Header = h // forward blob Header + if blob != nil && blob.Header != nil && b.Header == nil { + b.Header = blob.Header // forward blob Header } blob = b // forward Blob to next processor if exists }