| 
					
				 | 
			
			
				@@ -11,12 +11,19 @@ import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // readBody read response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func readBody(res *http.Response) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func readBody(req *http.Request, res *http.Response) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		body   []byte 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		reader io.Reader 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg.StatusCode = res.StatusCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg.Header = res.Header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg.res = res 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg.req = req 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	encoding := res.Header.Get("Content-Encoding") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	switch encoding { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	case "gzip": 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -31,14 +38,12 @@ func readBody(res *http.Response) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg.StatusCode = res.StatusCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg.Header = res.Header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	msg.Body = body 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // newRequest new request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func newRequest(method, uri string, body io.Reader, opt RequestOption) (res *http.Response, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func newRequest(method, uri string, body io.Reader, opt RequestOption) (req *http.Request, res *http.Response, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	t := &http.Transport{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Dial: func(netw, addr string) (net.Conn, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			conn, err := net.DialTimeout(netw, addr, opt.RequestTimeOut) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,7 +67,7 @@ func newRequest(method, uri string, body io.Reader, opt RequestOption) (res *htt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		t.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	c := &http.Client{Transport: t} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//var req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	req, err = http.NewRequest(method, uri, body) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,43 +77,51 @@ func newRequest(method, uri string, body io.Reader, opt RequestOption) (res *htt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		req.Header.Add(k, v) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if opt.Cookies != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for _, c := range opt.Cookies { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			req.AddCookie(c) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if len(opt.username) > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req.SetBasicAuth(opt.username, opt.password) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	res, err = c.Do(req) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Get HTTP request GET 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Get(uri string, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("GET", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("GET", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Head HTTP request HEAD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Head(uri string, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("HEAD", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	//msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg.req, msg.res, err = newRequest("HEAD", uri, nil, opt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // GetJSON HTTP request GET, response JSON 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func GetJSON(v interface{}, uri string, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("GET", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("GET", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,13 +131,15 @@ func GetJSON(v interface{}, uri string, opt RequestOption) (msg Message, err err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // GetXML HTTP request GET, response XML 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func GetXML(v interface{}, uri string, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("GET", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("GET", uri, nil, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -134,77 +149,98 @@ func GetXML(v interface{}, uri string, opt RequestOption) (msg Message, err erro 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Post HTTP request POST 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Post(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("POST", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("POST", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Put HTTP request PUT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Put(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("PUT", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("PUT", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Delete HTTP request DELETE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Delete(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("DELETE", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("DELETE", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Connect HTTP request CONNECT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Connect(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("CONNECT", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("CONNECT", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Options HTTP request OPTIONS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Options(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("OPTIONS", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("OPTIONS", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Trace HTTP request TRACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Trace(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("TRACE", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("TRACE", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Patch HTTP request PATCH 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func Patch(uri string, body io.Reader, opt RequestOption) (msg Message, err error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if res, err = newRequest("PATCH", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		res *http.Response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		req *http.Request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if req, res, err = newRequest("PATCH", uri, body, opt); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	defer res.Body.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msg, err = readBody(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	msg, err = readBody(req, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |