request.Write: Accept an io.Writer
This commit is contained in:
parent
c70ef5c470
commit
229ebb4106
|
@ -1,7 +1,6 @@
|
||||||
package gemini
|
package gemini
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"context"
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"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) {
|
func (c *Client) do(conn *tls.Conn, req *Request) (*Response, error) {
|
||||||
// Write the request
|
// Write the request
|
||||||
w := bufio.NewWriter(conn)
|
err := req.Write(conn)
|
||||||
|
|
||||||
err := req.Write(w)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to write request: %w", err)
|
return nil, fmt.Errorf("failed to write request: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,16 +107,17 @@ func ReadRequest(r io.Reader) (*Request, error) {
|
||||||
|
|
||||||
// Write writes a Gemini request in wire format.
|
// Write writes a Gemini request in wire format.
|
||||||
// This method consults the request URL only.
|
// 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()
|
url := r.URL.String()
|
||||||
if len(url) > 1024 {
|
if len(url) > 1024 {
|
||||||
return ErrInvalidRequest
|
return ErrInvalidRequest
|
||||||
}
|
}
|
||||||
if _, err := w.WriteString(url); err != nil {
|
if _, err := bw.WriteString(url); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if _, err := w.Write(crlf); err != nil {
|
if _, err := bw.Write(crlf); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return w.Flush()
|
return bw.Flush()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user