summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/monaco-io/request/build.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/monaco-io/request/build.go')
-rw-r--r--vendor/github.com/monaco-io/request/build.go98
1 files changed, 98 insertions, 0 deletions
diff --git a/vendor/github.com/monaco-io/request/build.go b/vendor/github.com/monaco-io/request/build.go
new file mode 100644
index 00000000..c2b1287b
--- /dev/null
+++ b/vendor/github.com/monaco-io/request/build.go
@@ -0,0 +1,98 @@
+package request
+
+import (
+ "bytes"
+ "net/http"
+ "net/http/cookiejar"
+ "net/url"
+ "time"
+)
+
+// TODO: func unit test coverage
+func (c *Client) buildRequest() (err error) {
+ if err = c.applyRequest(); err != nil {
+ return
+ }
+
+ c.transport = &http.Transport{}
+
+ c.applyHTTPHeader()
+ c.applyBasicAuth()
+ c.applyClient()
+ c.applyTimeout()
+ c.applyCookies()
+ c.applyTLSConfig()
+ err = c.applyProxy()
+
+ c.client.Transport = c.transport
+ return
+}
+
+func (c *Client) applyRequest() (err error) {
+ // encode requestURL.httpURL like https://google.com?hello=world&package=request
+ c.requestURL = requestURL{
+ urlString: c.URL,
+ parameters: c.Params,
+ }
+ if err = c.requestURL.EncodeURL(); err != nil {
+ return
+ }
+ c.req, err = http.NewRequest(c.Method, c.requestURL.string(), bytes.NewReader(c.Body))
+ return
+}
+
+func (c *Client) applyHTTPHeader() {
+ if c.Method == POST {
+ if c.ContentType == emptyString {
+ c.ContentType = ApplicationJSON
+ }
+ c.req.Header.Set(contentType, string(c.ContentType))
+ }
+ for k, v := range c.Header {
+ c.req.Header.Add(k, v)
+ }
+}
+
+func (c *Client) applyBasicAuth() {
+ if c.BasicAuth.Username != emptyString && c.BasicAuth.Password != emptyString {
+ c.req.SetBasicAuth(c.BasicAuth.Username, c.BasicAuth.Password)
+ }
+}
+
+func (c *Client) applyClient() {
+ c.client = &http.Client{}
+}
+
+func (c *Client) applyTimeout() {
+ if c.Timeout > 0 {
+ c.client.Timeout = c.Timeout * time.Second
+ }
+}
+
+func (c *Client) applyCookies() {
+ if c.Cookies != nil {
+ jar, _ := cookiejar.New(nil)
+ jar.SetCookies(&url.URL{Scheme: c.requestURL.scheme(), Host: c.requestURL.host()}, c.Cookies)
+ c.client.Jar = jar
+ }
+}
+
+// TODO: test case
+func (c *Client) applyProxy() (err error) {
+ if c.ProxyURL != emptyString {
+ var proxy *url.URL
+ if proxy, err = url.Parse(c.ProxyURL); err != nil {
+ return
+ } else if proxy != nil {
+ c.transport.Proxy = http.ProxyURL(proxy)
+ }
+ }
+ return
+}
+
+func (c *Client) applyTLSConfig() {
+ // &tls.Config{InsecureSkipVerify: true}
+ if c.TLSConfig != nil {
+ c.transport.TLSClientConfig = c.TLSConfig
+ }
+}