aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-02-18 21:58:35 -0500
committerAdnan Maolood <[email protected]>2021-02-18 21:58:37 -0500
commit229ebb410652f43da1a7e03db7e198df55d7ec3b (patch)
treebe81d957991d838f9d29b41eba65835ddef7e67e
parentclient: Remove superfluous call to Flush (diff)
downloadgo-gemini-229ebb410652f43da1a7e03db7e198df55d7ec3b.tar.xz
go-gemini-229ebb410652f43da1a7e03db7e198df55d7ec3b.zip
request.Write: Accept an io.Writer
-rw-r--r--client.go5
-rw-r--r--request.go9
2 files changed, 6 insertions, 8 deletions
diff --git a/client.go b/client.go
index a2e53f0..155dd8b 100644
--- a/client.go
+++ b/client.go
@@ -1,7 +1,6 @@
package gemini
import (
- "bufio"
"context"
"crypto/tls"
"crypto/x509"
@@ -157,9 +156,7 @@ func (c *Client) Do(req *Request) (*Response, error) {
func (c *Client) do(conn *tls.Conn, req *Request) (*Response, error) {
// Write the request
- w := bufio.NewWriter(conn)
-
- err := req.Write(w)
+ err := req.Write(conn)
if err != nil {
return nil, fmt.Errorf("failed to write request: %w", err)
}
diff --git a/request.go b/request.go
index 72fb2cb..b111388 100644
--- a/request.go
+++ b/request.go
@@ -107,16 +107,17 @@ func ReadRequest(r io.Reader) (*Request, error) {
// Write writes a Gemini request in wire format.
// This method consults the request URL only.
-func (r *Request) Write(w *bufio.Writer) error {
+func (r *Request) Write(w io.Writer) error {
+ bw := bufio.NewWriterSize(w, 1026)
url := r.URL.String()
if len(url) > 1024 {
return ErrInvalidRequest
}
- if _, err := w.WriteString(url); err != nil {
+ if _, err := bw.WriteString(url); err != nil {
return err
}
- if _, err := w.Write(crlf); err != nil {
+ if _, err := bw.Write(crlf); err != nil {
return err
}
- return w.Flush()
+ return bw.Flush()
}