diff options
| author | Adnan Maolood <[email protected]> | 2021-02-28 22:21:54 -0500 |
|---|---|---|
| committer | Adnan Maolood <[email protected]> | 2021-02-28 22:21:54 -0500 |
| commit | 69f0913b3d84f26fa57ca27297dd6f87a46ff4a8 (patch) | |
| tree | e861610685149118db3a9bc5cd9e6326bd532402 | |
| parent | Request.WriteTo: return int64 (diff) | |
| download | go-gemini-69f0913b3d84f26fa57ca27297dd6f87a46ff4a8.tar.xz go-gemini-69f0913b3d84f26fa57ca27297dd6f87a46ff4a8.zip | |
Make Response implement io.WriterTov0.1.18
| -rw-r--r-- | response.go | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/response.go b/response.go index 3735c14..f25e71b 100644 --- a/response.go +++ b/response.go @@ -112,22 +112,27 @@ func (r *Response) TLS() *tls.ConnectionState { return nil } -// Write writes r to w in the Gemini response format, including the +// WriteTo writes r to w in the Gemini response format, including the // header and body. // // This method consults the Status, Meta, and Body fields of the response. // The Response Body is closed after it is sent. -func (r *Response) Write(w io.Writer) error { - if _, err := fmt.Fprintf(w, "%02d %s\r\n", r.Status, r.Meta); err != nil { - return err +func (r *Response) WriteTo(w io.Writer) (int64, error) { + var wrote int64 + n, err := fmt.Fprintf(w, "%02d %s\r\n", r.Status, r.Meta) + wrote += int64(n) + if err != nil { + return wrote, err } if r.Body != nil { defer r.Body.Close() - if _, err := io.Copy(w, r.Body); err != nil { - return err + n, err := io.Copy(w, r.Body) + wrote += n + if err != nil { + return wrote, err } } - return nil + return wrote, nil } // A ResponseWriter interface is used by a Gemini handler to construct |