mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -5,7 +5,7 @@ | ||||
|  | ||||
| package httplib | ||||
|  | ||||
| // NOTE: last sync c07b1d8 on Aug 23, 2014. | ||||
| // NOTE: last sync 57e62e5 on Oct 29, 2014. | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| @@ -14,6 +14,7 @@ import ( | ||||
| 	"encoding/xml" | ||||
| 	"io" | ||||
| 	"io/ioutil" | ||||
| 	"log" | ||||
| 	"mime/multipart" | ||||
| 	"net" | ||||
| 	"net/http" | ||||
| @@ -252,35 +253,36 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) { | ||||
| 		} else { | ||||
| 			b.url = b.url + "?" + paramBody | ||||
| 		} | ||||
| 	} else if b.req.Method == "POST" && b.req.Body == nil && len(paramBody) > 0 { | ||||
| 	} else if b.req.Method == "POST" && b.req.Body == nil { | ||||
| 		if len(b.files) > 0 { | ||||
| 			bodyBuf := &bytes.Buffer{} | ||||
| 			bodyWriter := multipart.NewWriter(bodyBuf) | ||||
| 			for formname, filename := range b.files { | ||||
| 				fileWriter, err := bodyWriter.CreateFormFile(formname, filename) | ||||
| 				if err != nil { | ||||
| 					return nil, err | ||||
| 			pr, pw := io.Pipe() | ||||
| 			bodyWriter := multipart.NewWriter(pw) | ||||
| 			go func() { | ||||
| 				for formname, filename := range b.files { | ||||
| 					fileWriter, err := bodyWriter.CreateFormFile(formname, filename) | ||||
| 					if err != nil { | ||||
| 						log.Fatal(err) | ||||
| 					} | ||||
| 					fh, err := os.Open(filename) | ||||
| 					if err != nil { | ||||
| 						log.Fatal(err) | ||||
| 					} | ||||
| 					//iocopy | ||||
| 					_, err = io.Copy(fileWriter, fh) | ||||
| 					fh.Close() | ||||
| 					if err != nil { | ||||
| 						log.Fatal(err) | ||||
| 					} | ||||
| 				} | ||||
| 				fh, err := os.Open(filename) | ||||
| 				if err != nil { | ||||
| 					return nil, err | ||||
| 				for k, v := range b.params { | ||||
| 					bodyWriter.WriteField(k, v) | ||||
| 				} | ||||
| 				//iocopy | ||||
| 				_, err = io.Copy(fileWriter, fh) | ||||
| 				fh.Close() | ||||
| 				if err != nil { | ||||
| 					return nil, err | ||||
| 				} | ||||
| 			} | ||||
| 			for k, v := range b.params { | ||||
| 				bodyWriter.WriteField(k, v) | ||||
| 			} | ||||
| 			contentType := bodyWriter.FormDataContentType() | ||||
| 			bodyWriter.Close() | ||||
| 			b.Header("Content-Type", contentType) | ||||
| 			b.req.Body = ioutil.NopCloser(bodyBuf) | ||||
| 			b.req.ContentLength = int64(bodyBuf.Len()) | ||||
| 		} else { | ||||
| 				bodyWriter.Close() | ||||
| 				pw.Close() | ||||
| 			}() | ||||
| 			b.Header("Content-Type", bodyWriter.FormDataContentType()) | ||||
| 			b.req.Body = ioutil.NopCloser(pr) | ||||
| 		} else if len(paramBody) > 0 { | ||||
| 			b.Header("Content-Type", "application/x-www-form-urlencoded") | ||||
| 			b.Body(paramBody) | ||||
| 		} | ||||
| @@ -332,7 +334,7 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) { | ||||
| 		Jar:       jar, | ||||
| 	} | ||||
|  | ||||
| 	if b.setting.UserAgent != "" { | ||||
| 	if len(b.setting.UserAgent) > 0 && len(b.req.Header.Get("User-Agent")) == 0 { | ||||
| 		b.req.Header.Set("User-Agent", b.setting.UserAgent) | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -57,23 +57,23 @@ func TestSimplePost(t *testing.T) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestPostFile(t *testing.T) { | ||||
| 	v := "smallfish" | ||||
| 	req := Post("http://httpbin.org/post") | ||||
| 	req.Param("username", v) | ||||
| 	req.PostFile("uploadfile", "httplib_test.go") | ||||
| // func TestPostFile(t *testing.T) { | ||||
| // 	v := "smallfish" | ||||
| // 	req := Post("http://httpbin.org/post") | ||||
| // 	req.Param("username", v) | ||||
| // 	req.PostFile("uploadfile", "httplib_test.go") | ||||
|  | ||||
| 	str, err := req.String() | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	t.Log(str) | ||||
| // 	str, err := req.String() | ||||
| // 	if err != nil { | ||||
| // 		t.Fatal(err) | ||||
| // 	} | ||||
| // 	t.Log(str) | ||||
|  | ||||
| 	n := strings.Index(str, v) | ||||
| 	if n == -1 { | ||||
| 		t.Fatal(v + " not found in post") | ||||
| 	} | ||||
| } | ||||
| // 	n := strings.Index(str, v) | ||||
| // 	if n == -1 { | ||||
| // 		t.Fatal(v + " not found in post") | ||||
| // 	} | ||||
| // } | ||||
|  | ||||
| func TestSimplePut(t *testing.T) { | ||||
| 	str, err := Put("http://httpbin.org/put").String() | ||||
| @@ -194,3 +194,13 @@ func TestToFile(t *testing.T) { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestHeader(t *testing.T) { | ||||
| 	req := Get("http://httpbin.org/headers") | ||||
| 	req.Header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36") | ||||
| 	str, err := req.String() | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	t.Log(str) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user