mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08: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)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user