]> source.dussan.org Git - gitea.git/commitdiff
#634
authorUnknwon <joe2010xtmf@163.com>
Tue, 18 Nov 2014 20:13:08 +0000 (15:13 -0500)
committerUnknwon <joe2010xtmf@163.com>
Tue, 18 Nov 2014 20:13:08 +0000 (15:13 -0500)
.gopmfile
models/publickey.go
modules/httplib/httplib.go
modules/httplib/httplib_test.go

index a350578d6c653363cbe51534e6fc356e34f48e17..c9441c18e382ed22a5f4d94a3eb380141e01187c 100644 (file)
--- a/.gopmfile
+++ b/.gopmfile
@@ -13,7 +13,7 @@ github.com/codegangsta/cli = commit:7381bc4e62
 github.com/go-sql-driver/mysql = commit:8111ee3ec3
 github.com/go-xorm/core = commit:3e0fa232ab
 github.com/go-xorm/xorm = commit:58d33844ce
-github.com/gogits/go-gogs-client = commit:a5c3262f5e
+github.com/gogits/go-gogs-client = commit:3b1d86c3a8
 github.com/gogits/oauth2 = commit:99cbec870a
 github.com/lib/pq = commit:b021d0ef20
 github.com/macaron-contrib/binding = commit:0e23661e7d
index f379e12188c40836410b2fbdec7c61d1f6f6aaac..29c12c6e3bfdb88c0ddc9b1fbc31ac403d08f8d7 100644 (file)
@@ -108,6 +108,7 @@ var (
 
 // CheckPublicKeyString checks if the given public key string is recognized by SSH.
 func CheckPublicKeyString(content string) (bool, error) {
+       content = strings.TrimRight(content, "\n\r")
        if strings.ContainsAny(content, "\n\r") {
                return false, errors.New("only a single line with a single key please")
        }
index 5f592168dc9ee459964258715a28b9dbd49dd1aa..171dfe013935f74689b26c5c9d896adeedeab067 100644 (file)
@@ -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)
        }
 
index 8a529c53a680d8cd37b2494a6227b54c6ab5cff4..e3f6b5d4090b976545bcdf3a02626298b0d9719d 100644 (file)
@@ -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")
-
-       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")
-       }
-}
+// 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)
+
+//     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)
+}