aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-02-28 22:21:54 -0500
committerAdnan Maolood <[email protected]>2021-02-28 22:21:54 -0500
commit69f0913b3d84f26fa57ca27297dd6f87a46ff4a8 (patch)
treee861610685149118db3a9bc5cd9e6326bd532402
parentRequest.WriteTo: return int64 (diff)
downloadgo-gemini-69f0913b3d84f26fa57ca27297dd6f87a46ff4a8.tar.xz
go-gemini-69f0913b3d84f26fa57ca27297dd6f87a46ff4a8.zip
Make Response implement io.WriterTov0.1.18
-rw-r--r--response.go19
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