diff --git a/httplib/httplib.go b/httplib/httplib.go index 101ee30b..6531acd2 100644 --- a/httplib/httplib.go +++ b/httplib/httplib.go @@ -73,64 +73,42 @@ func SetDefaultSetting(setting BeegoHttpSettings) { } } +// return *BeegoHttpRequest with specific method +func newBeegoRequest(url, method string) *BeegoHttpRequest { + req := http.Request{ + Proto: "HTTP/1.1", + ProtoMajor: 1, + ProtoMinor: 1, + } + var resp http.Response + req.Method = method + req.Header = http.Header{} + return &BeegoHttpRequest{url, &req, map[string]string{}, map[string]string{}, defaultSetting, &resp, nil} +} + // Get returns *BeegoHttpRequest with GET method. func Get(url string) *BeegoHttpRequest { - var req http.Request - var resp http.Response - req.Method = "GET" - req.Header = http.Header{} - req.Proto = "HTTP/1.1" - req.ProtoMajor = 1 - req.ProtoMinor = 1 - return &BeegoHttpRequest{url, &req, map[string]string{}, map[string]string{}, defaultSetting, &resp, nil} + return newBeegoRequest(url, "GET") } // Post returns *BeegoHttpRequest with POST method. func Post(url string) *BeegoHttpRequest { - var req http.Request - var resp http.Response - req.Method = "POST" - req.Header = http.Header{} - req.Proto = "HTTP/1.1" - req.ProtoMajor = 1 - req.ProtoMinor = 1 - return &BeegoHttpRequest{url, &req, map[string]string{}, map[string]string{}, defaultSetting, &resp, nil} + return newBeegoRequest(url, "POST") } // Put returns *BeegoHttpRequest with PUT method. func Put(url string) *BeegoHttpRequest { - var req http.Request - var resp http.Response - req.Method = "PUT" - req.Header = http.Header{} - req.Proto = "HTTP/1.1" - req.ProtoMajor = 1 - req.ProtoMinor = 1 - return &BeegoHttpRequest{url, &req, map[string]string{}, map[string]string{}, defaultSetting, &resp, nil} + return newBeegoRequest(url, "PUT") } // Delete returns *BeegoHttpRequest DELETE GET method. func Delete(url string) *BeegoHttpRequest { - var req http.Request - var resp http.Response - req.Method = "DELETE" - req.Header = http.Header{} - req.Proto = "HTTP/1.1" - req.ProtoMajor = 1 - req.ProtoMinor = 1 - return &BeegoHttpRequest{url, &req, map[string]string{}, map[string]string{}, defaultSetting, &resp, nil} + return newBeegoRequest(url, "DELETE") } // Head returns *BeegoHttpRequest with HEAD method. func Head(url string) *BeegoHttpRequest { - var req http.Request - var resp http.Response - req.Method = "HEAD" - req.Header = http.Header{} - req.Proto = "HTTP/1.1" - req.ProtoMajor = 1 - req.ProtoMinor = 1 - return &BeegoHttpRequest{url, &req, map[string]string{}, map[string]string{}, defaultSetting, &resp, nil} + return newBeegoRequest(url, "HEAD") } // BeegoHttpSettings @@ -341,13 +319,6 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) { } b.req.URL = url - if b.setting.ShowDebug { - dump, err := httputil.DumpRequest(b.req, true) - if err != nil { - println(err.Error()) - } - println(string(dump)) - } trans := b.setting.Transport @@ -392,6 +363,14 @@ func (b *BeegoHttpRequest) getResponse() (*http.Response, error) { b.req.Header.Set("User-Agent", b.setting.UserAgent) } + if b.setting.ShowDebug { + dump, err := httputil.DumpRequest(b.req, true) + if err != nil { + println(err.Error()) + } + println(string(dump)) + } + resp, err := client.Do(b.req) if err != nil { return nil, err