Expose Request.Write and Response.Read functions
This commit is contained in:
parent
c329a2487e
commit
decd72cc23
@ -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
|
||||||
|
@ -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 {
|
||||||
|
@ -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)
|
||||||
|
@ -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),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user