Skip to content

Instantly share code, notes, and snippets.

@caitong93
Created December 5, 2018 02:55
Show Gist options
  • Save caitong93/695e63cf37e9061520b559e7c2c07919 to your computer and use it in GitHub Desktop.
Save caitong93/695e63cf37e9061520b559e7c2c07919 to your computer and use it in GitHub Desktop.

Revisions

  1. Tong Cai created this gist Dec 5, 2018.
    40 changes: 40 additions & 0 deletions client.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    var defaultTransport = &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    Dial: (&net.Dialer{
    Timeout: 30 * time.Second,
    KeepAlive: 30 * time.Second,
    }).Dial,
    TLSHandshakeTimeout: 10 * time.Second,
    TLSClientConfig: &tls.Config{
    InsecureSkipVerify: true,
    },
    }

    type AuthTransport struct {
    *http.Transport
    Token string
    Username string
    Password string
    }

    func NewAuthTransport(username, password, token string) *AuthTransport {
    return &AuthTransport{
    Transport: defaultTransport,
    Token: token,
    Username: username,
    Password: password,
    }
    }

    func (t *AuthTransport) RoundTrip(req *http.Request) (*http.Response, error) {
    if len(t.Token) != 0 {
    token := oauth2.Token{
    TokenType: "Bearer",
    AccessToken: t.Token,
    }
    token.SetAuthHeader(req)
    } else {
    req.SetBasicAuth(t.Username, t.Password)
    }
    return t.Transport.RoundTrip(req)
    }