Merge branch 'master' into feature-http-client

This commit is contained in:
Alex Pliutau 2017-07-09 21:20:19 +07:00 committed by GitHub
commit 3b03097b1b
2 changed files with 6 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import (
"io/ioutil"
"net/http"
"net/http/httputil"
"time"
)
// NewClient returns new Client struct
@ -45,6 +46,7 @@ func (c *Client) GetAccessToken() (*TokenResponse, error) {
// Set Token fur current Client
if t.Token != "" {
c.Token = &t
c.tokenExpiresAt = time.Now().Add(time.Duration(t.ExpiresIn) * time.Second)
}
return &t, err
@ -62,6 +64,7 @@ func (c *Client) SetAccessToken(token string) error {
c.Token = &TokenResponse{
Token: token,
}
c.tokenExpiresAt = time.Unix(0, 0)
return nil
}
@ -131,7 +134,7 @@ func (c *Client) Send(req *http.Request, v interface{}) error {
// client.Token will be updated when changed
func (c *Client) SendWithAuth(req *http.Request, v interface{}) error {
if c.Token != nil {
if c.Token.ExpiresIn < RequestNewTokenBeforeExpiresIn {
if !c.tokenExpiresAt.IsZero() && c.tokenExpiresAt.Sub(time.Now()) < RequestNewTokenBeforeExpiresIn {
// c.Token will be updated in GetAccessToken call
if _, err := c.GetAccessToken(); err != nil {
return err

View File

@ -15,7 +15,7 @@ const (
APIBaseLive = "https://api.paypal.com"
// RequestNewTokenBeforeExpiresIn is used by SendWithAuth and try to get new Token when it's about to expire
RequestNewTokenBeforeExpiresIn = 60
RequestNewTokenBeforeExpiresIn = time.Duration(60) * time.Second
)
// Possible values for `no_shipping` in InputFields
@ -113,6 +113,7 @@ type (
APIBase string
Log io.Writer // If user set log file name all requests will be logged there
Token *TokenResponse
tokenExpiresAt time.Time
}
// CreditCard struct