net/http/client.go

49 lines
812 B
Go

package http
import (
"strings"
)
var (
CRLF = []byte("\r\n")
SP = []byte(" ")
)
type Client struct {
DNS DNS
Transport RoundTripper
}
func (c *Client) Do(method string, url string, headers []Header) (*Response, error) {
url = strings.TrimPrefix(url, "http://")
url = strings.TrimPrefix(url, "https://")
path := "/"
arr := strings.Split(url, "/")
if len(arr) == 2 {
path = arr[1]
}
if !strings.HasPrefix(path, "/") {
path = "/" + path
}
connectPath := ""
if c.DNS != nil {
var err error
connectPath, err = c.DNS.GetIP(arr[0])
if err != nil {
return nil, err
}
}
resp, err := c.Transport.RoundTrip(
&Request{
ConnectPath: connectPath,
Method: method,
Path: path,
Protocol: "HTTP/1.0",
Headers: headers,
},
)
return resp, err
}