Skip to content

Commit daed69f

Browse files
committed
Since some templating engines final result is a buffer, we've been casting them to strings, which is a bit unnecessary considering under the hood Echo supports this.
1 parent ff8a3bd commit daed69f

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

context.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ type (
106106
// HTML sends an HTTP response with status code.
107107
HTML(int, string) error
108108

109+
// HTMLBuffer sends an HTTP response via a bytes.Buffer with status code.
110+
HTMLBuffer(int, *bytes.Buffer) error
111+
109112
// String sends a string response with status code.
110113
String(int, string) error
111114

@@ -362,6 +365,13 @@ func (c *context) HTML(code int, html string) (err error) {
362365
return
363366
}
364367

368+
func (c *context) HTMLBuffer(code int, buf *bytes.Buffer) (err error) {
369+
c.response.Header().Set(HeaderContentType, MIMETextHTMLCharsetUTF8)
370+
c.response.WriteHeader(code)
371+
_, err = c.response.Write(buf.Bytes())
372+
return
373+
}
374+
365375
func (c *context) String(code int, s string) (err error) {
366376
c.response.Header().Set(HeaderContentType, MIMETextPlainCharsetUTF8)
367377
c.response.WriteHeader(code)

context_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,16 @@ func TestContext(t *testing.T) {
126126
assert.Equal(t, "Hello, <strong>World!</strong>", rec.Body.String())
127127
}
128128

129+
// HTMLBuffer
130+
rec = httptest.NewRecorder()
131+
c = e.NewContext(req, rec).(*context)
132+
err = c.HTMLBuffer(http.StatusOK, bytes.NewBufferString("Hello, <strong>World!</strong>"))
133+
if assert.NoError(t, err) {
134+
assert.Equal(t, http.StatusOK, rec.Status())
135+
assert.Equal(t, MIMETextHTMLCharsetUTF8, rec.Header().Get(HeaderContentType))
136+
assert.Equal(t, "Hello, <strong>World!</strong>", rec.Body.String())
137+
}
138+
129139
// Stream
130140
rec = httptest.NewRecorder()
131141
c = e.NewContext(req, rec).(*context)

0 commit comments

Comments
 (0)