diff --git a/capture_metrics.go b/capture_metrics.go index 8f9191f..6874282 100644 --- a/capture_metrics.go +++ b/capture_metrics.go @@ -69,6 +69,16 @@ func (m *Metrics) CaptureMetrics(w http.ResponseWriter, fn func(http.ResponseWri } }, + WriteString: func(next WriteStringFunc) WriteStringFunc { + return func(s string) (int, error) { + n, err := next(s) + + m.Written += int64(n) + headerWritten = true + return n, err + } + }, + ReadFrom: func(next ReadFromFunc) ReadFromFunc { return func(src io.Reader) (int64, error) { n, err := next(src) diff --git a/capture_metrics_test.go b/capture_metrics_test.go index 238ed02..222c8cb 100644 --- a/capture_metrics_test.go +++ b/capture_metrics_test.go @@ -61,6 +61,14 @@ func TestCaptureMetrics(t *testing.T) { WantWritten: 17, WantCode: http.StatusOK, }, + { + Name: "string writer", + Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.WriteString(w, "write string") + }), + WantWritten: int64(len("write string")), + WantCode: http.StatusOK, + }, { Name: "empty panic", Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {