feat: get access token automatically (#261)

This commit is contained in:
Penny 2024-02-01 17:07:34 +08:00 committed by GitHub
parent 26473c3630
commit 5fddf59f71
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 23 deletions

View File

@ -119,8 +119,6 @@ import "github.com/plutov/paypal/v4"
// Create a client instance
c, err := paypal.NewClient("clientID", "secretID", paypal.APIBaseSandBox)
c.SetLog(os.Stdout) // Set log to terminal stdout
accessToken, err := c.GetAccessToken(context.Background())
```
## Get authorization by ID

View File

@ -143,8 +143,7 @@ func (c *Client) SendWithAuth(req *http.Request, v interface{}) error {
// Note: Here we do not want to `defer c.Unlock()` because we need `c.Send(...)`
// to happen outside of the locked section.
if c.Token != nil {
if !c.tokenExpiresAt.IsZero() && c.tokenExpiresAt.Sub(time.Now()) < RequestNewTokenBeforeExpiresIn {
if c.Token == nil || (!c.tokenExpiresAt.IsZero() && time.Until(c.tokenExpiresAt) < RequestNewTokenBeforeExpiresIn) {
// c.Token will be updated in GetAccessToken call
if _, err := c.GetAccessToken(req.Context()); err != nil {
// c.Unlock()
@ -154,7 +153,6 @@ func (c *Client) SendWithAuth(req *http.Request, v interface{}) error {
}
req.Header.Set("Authorization", "Bearer "+c.Token.Token)
}
// Unlock the client mutex before sending the request, this allows multiple requests
// to be in progress at the same time.
// c.Unlock()

View File

@ -65,9 +65,7 @@ func (c *Client) sendWithAuth(req *http.Request, v interface{}) error {
err := errors.New("TryLock succeeded inside sendWithAuth with mutex locked")
return err
}
if c.Token != nil {
if !c.tokenExpiresAt.IsZero() && c.tokenExpiresAt.Sub(time.Now()) < RequestNewTokenBeforeExpiresIn {
if c.Token == nil || (!c.tokenExpiresAt.IsZero() && time.Until(c.tokenExpiresAt) < RequestNewTokenBeforeExpiresIn) {
// c.Token will be updated in GetAccessToken call
if _, err := c.GetAccessToken(req.Context()); err != nil {
// c.Unlock()
@ -75,9 +73,7 @@ func (c *Client) sendWithAuth(req *http.Request, v interface{}) error {
return err
}
}
req.Header.Set("Authorization", "Bearer "+c.Token.Token)
}
// Unlock the client mutex before sending the request, this allows multiple requests
// to be in progress at the same time.
// c.Unlock()