Expose Request.Write and Response.Read functions

This commit is contained in:
Adnan Maolood 2020-12-18 01:14:06 -05:00
parent c329a2487e
commit decd72cc23
4 changed files with 9 additions and 8 deletions

View File

@ -78,14 +78,14 @@ func (c *Client) Do(req *Request) (*Response, error) {
// Write the request // Write the request
w := bufio.NewWriter(conn) w := bufio.NewWriter(conn)
req.write(w) req.Write(w)
if err := w.Flush(); err != nil { if err := w.Flush(); err != nil {
return nil, err return nil, err
} }
// Read the response // Read the response
resp := &Response{} resp := &Response{}
if err := resp.read(conn); err != nil { if err := resp.Read(conn); err != nil {
return nil, err return nil, err
} }
// Store connection state // Store connection state

View File

@ -65,8 +65,8 @@ func NewRequestFromURL(url *url.URL) *Request {
} }
} }
// write writes the Gemini request to the provided buffered writer. // Write writes the Gemini request to the provided buffered writer.
func (r *Request) write(w *bufio.Writer) error { func (r *Request) Write(w *bufio.Writer) error {
url := r.URL.String() url := r.URL.String()
// User is invalid // User is invalid
if r.URL.User != nil || len(url) > 1024 { if r.URL.User != nil || len(url) > 1024 {

View File

@ -26,8 +26,8 @@ type Response struct {
TLS tls.ConnectionState TLS tls.ConnectionState
} }
// read reads a Gemini response from the provided io.ReadCloser. // Read reads a Gemini response from the provided io.ReadCloser.
func (resp *Response) read(rc io.ReadCloser) error { func (resp *Response) Read(rc io.ReadCloser) error {
br := bufio.NewReader(rc) br := bufio.NewReader(rc)
// Read the status // Read the status
statusB := make([]byte, 2) statusB := make([]byte, 2)

View File

@ -182,7 +182,7 @@ func (s *Server) respond(conn net.Conn) {
} }
r := bufio.NewReader(conn) r := bufio.NewReader(conn)
w := newResponseWriter(conn) w := NewResponseWriter(conn)
// Read requested URL // Read requested URL
rawurl, err := r.ReadString('\r') rawurl, err := r.ReadString('\r')
if err != nil { if err != nil {
@ -264,7 +264,8 @@ type ResponseWriter struct {
mediatype string mediatype string
} }
func newResponseWriter(conn net.Conn) *ResponseWriter { // NewResponseWriter returns a ResponseWriter that will write to conn.
func NewResponseWriter(conn net.Conn) *ResponseWriter {
return &ResponseWriter{ return &ResponseWriter{
b: bufio.NewWriter(conn), b: bufio.NewWriter(conn),
} }