From 860006bfdae293bd30944a5dd7980b8f964da5b7 Mon Sep 17 00:00:00 2001 From: Shuai Date: Tue, 18 Aug 2015 19:28:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?httplib=E8=AF=B7=E6=B1=82=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=94=AF=E6=8C=81[]string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httplib/httplib.go | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/httplib/httplib.go b/httplib/httplib.go index 68c22d70..c671cc0a 100644 --- a/httplib/httplib.go +++ b/httplib/httplib.go @@ -100,8 +100,8 @@ func NewBeegoRequest(rawurl, method string) *BeegoHttpRequest { return &BeegoHttpRequest{ url: rawurl, req: &req, - params: map[string]string{}, - files: map[string]string{}, + params: map[string]interface{}{}, + files: map[string]string{}, setting: defaultSetting, resp: &resp, } @@ -150,7 +150,7 @@ type BeegoHttpSettings struct { type BeegoHttpRequest struct { url string req *http.Request - params map[string]string + params map[string]interface{} files map[string]string setting BeegoHttpSettings resp *http.Response @@ -272,8 +272,13 @@ func (b *BeegoHttpRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) // Param adds query param in to request. // params build query string as ?key1=value1&key2=value2... -func (b *BeegoHttpRequest) Param(key, value string) *BeegoHttpRequest { - b.params[key] = value +func (b *BeegoHttpRequest) Param(key, value interface{}) *BeegoHttpRequest { + switch value.(type) { + case string: + b.params[key.(string)] = value.(string) + case []string: + b.params[key.(string)] = value.([]string) + } return b } @@ -348,7 +353,14 @@ func (b *BeegoHttpRequest) buildUrl(paramBody string) { } } for k, v := range b.params { - bodyWriter.WriteField(k, v) + switch v.(type) { + case string: + bodyWriter.WriteField(k, v.(string)) + case []string: + for _, vv := range v.([]string) { + bodyWriter.WriteField(k, vv) + } + } } bodyWriter.Close() pw.Close() @@ -383,10 +395,20 @@ func (b *BeegoHttpRequest) SendOut() (*http.Response, error) { if len(b.params) > 0 { var buf bytes.Buffer for k, v := range b.params { - buf.WriteString(url.QueryEscape(k)) - buf.WriteByte('=') - buf.WriteString(url.QueryEscape(v)) - buf.WriteByte('&') + switch v.(type) { + case string: + buf.WriteString(url.QueryEscape(k)) + buf.WriteByte('=') + buf.WriteString(url.QueryEscape(v.(string))) + buf.WriteByte('&') + case []string: + for _, vv := range v.([]string) { + buf.WriteString(url.QueryEscape(k)) + buf.WriteByte('=') + buf.WriteString(url.QueryEscape(vv)) + buf.WriteByte('&') + } + } } paramBody = buf.String() paramBody = paramBody[0 : len(paramBody)-1] From ff92f22d841a7015958ede181d8c76164c7c84bb Mon Sep 17 00:00:00 2001 From: Shuai Date: Tue, 18 Aug 2015 23:19:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=A0=E9=99=A4Param=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=96=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httplib/httplib.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/httplib/httplib.go b/httplib/httplib.go index c671cc0a..1b7b207d 100644 --- a/httplib/httplib.go +++ b/httplib/httplib.go @@ -272,13 +272,8 @@ func (b *BeegoHttpRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) // Param adds query param in to request. // params build query string as ?key1=value1&key2=value2... -func (b *BeegoHttpRequest) Param(key, value interface{}) *BeegoHttpRequest { - switch value.(type) { - case string: - b.params[key.(string)] = value.(string) - case []string: - b.params[key.(string)] = value.([]string) - } +func (b *BeegoHttpRequest) Param(key string, value interface{}) *BeegoHttpRequest { + b.params[key] = value return b } From 862ea226e5c8b2099c9d3a4e7ed5df90ceae5a56 Mon Sep 17 00:00:00 2001 From: Shuai Date: Mon, 24 Aug 2015 00:16:56 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httplib/httplib.go | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/httplib/httplib.go b/httplib/httplib.go index 1b7b207d..b10b770a 100644 --- a/httplib/httplib.go +++ b/httplib/httplib.go @@ -100,8 +100,8 @@ func NewBeegoRequest(rawurl, method string) *BeegoHttpRequest { return &BeegoHttpRequest{ url: rawurl, req: &req, - params: map[string]interface{}{}, - files: map[string]string{}, + params: map[string][]string{}, + files: map[string]string{}, setting: defaultSetting, resp: &resp, } @@ -150,7 +150,7 @@ type BeegoHttpSettings struct { type BeegoHttpRequest struct { url string req *http.Request - params map[string]interface{} + params map[string][]string files map[string]string setting BeegoHttpSettings resp *http.Response @@ -272,8 +272,12 @@ func (b *BeegoHttpRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) // Param adds query param in to request. // params build query string as ?key1=value1&key2=value2... -func (b *BeegoHttpRequest) Param(key string, value interface{}) *BeegoHttpRequest { - b.params[key] = value +func (b *BeegoHttpRequest) Param(key, value string) *BeegoHttpRequest { + if param, ok := b.params[key]; ok { + b.params[key] = append(param, value) + } else { + b.params[key] = []string{value} + } return b } @@ -348,14 +352,9 @@ func (b *BeegoHttpRequest) buildUrl(paramBody string) { } } for k, v := range b.params { - switch v.(type) { - case string: - bodyWriter.WriteField(k, v.(string)) - case []string: - for _, vv := range v.([]string) { - bodyWriter.WriteField(k, vv) - } - } + for _, vv := range v { + bodyWriter.WriteField(k, vv) + } } bodyWriter.Close() pw.Close() @@ -390,20 +389,12 @@ func (b *BeegoHttpRequest) SendOut() (*http.Response, error) { if len(b.params) > 0 { var buf bytes.Buffer for k, v := range b.params { - switch v.(type) { - case string: - buf.WriteString(url.QueryEscape(k)) - buf.WriteByte('=') - buf.WriteString(url.QueryEscape(v.(string))) - buf.WriteByte('&') - case []string: - for _, vv := range v.([]string) { - buf.WriteString(url.QueryEscape(k)) - buf.WriteByte('=') - buf.WriteString(url.QueryEscape(vv)) - buf.WriteByte('&') - } - } + for _, vv := range v { + buf.WriteString(url.QueryEscape(k)) + buf.WriteByte('=') + buf.WriteString(url.QueryEscape(vv)) + buf.WriteByte('&') + } } paramBody = buf.String() paramBody = paramBody[0 : len(paramBody)-1]