package tcp import ( "encoding/json" "net" ) func Do(addr, route string, method Method, body []byte) ([]byte, error) { conn, err := net.Dial("tcp", addr) if err != nil { return []byte{}, err } defer conn.Close() header := RequestHeader{ Method: method, Route: route, } rawHeader, err := json.Marshal(header) if err != nil { return []byte{}, err } if err := sendFrame(conn, rawHeader); err != nil { return []byte{}, err } if err := sendFrame(conn, body); err != nil { return []byte{}, err } b, err := readFrame(conn) if err != nil { return []byte{}, err } return b, nil } func Get(addr, route string) ([]byte, error) { return Do(addr, route, MethodGET, []byte{}) } func Post(addr, route string, b []byte) ([]byte, error) { return Do(addr, route, MethodPOST, b) }