Skip to content

Commit 0406abe

Browse files
committed
Add the ability to change the status code using Response beforeFuncs
1 parent b90e4e8 commit 0406abe

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

response.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ func (r *Response) WriteHeader(code int) {
5656
r.echo.Logger.Warn("response already committed")
5757
return
5858
}
59+
r.Status = code
5960
for _, fn := range r.beforeFuncs {
6061
fn()
6162
}
62-
r.Status = code
63-
r.Writer.WriteHeader(code)
63+
r.Writer.WriteHeader(r.Status)
6464
r.Committed = true
6565
}
6666

response_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,19 @@ func TestResponse_Flush(t *testing.T) {
5656
res.Flush()
5757
assert.True(t, rec.Flushed)
5858
}
59+
60+
func TestResponse_ChangeStatusCodeBeforeWrite(t *testing.T) {
61+
e := New()
62+
rec := httptest.NewRecorder()
63+
res := &Response{echo: e, Writer: rec}
64+
65+
res.Before(func() {
66+
if 200 < res.Status && res.Status < 300 {
67+
res.Status = 200
68+
}
69+
})
70+
71+
res.WriteHeader(209)
72+
73+
assert.Equal(t, http.StatusOK, rec.Code)
74+
}

0 commit comments

Comments
 (0)