Skip to content

Commit 5fddf59

Browse files
authored
feat: get access token automatically (#261)
1 parent 26473c3 commit 5fddf59

File tree

3 files changed

+15
-23
lines changed

3 files changed

+15
-23
lines changed

README.md

-2
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,6 @@ import "github.com/plutov/paypal/v4"
119119
// Create a client instance
120120
c, err := paypal.NewClient("clientID", "secretID", paypal.APIBaseSandBox)
121121
c.SetLog(os.Stdout) // Set log to terminal stdout
122-
123-
accessToken, err := c.GetAccessToken(context.Background())
124122
```
125123

126124
## Get authorization by ID

client.go

+8-10
Original file line numberDiff line numberDiff line change
@@ -143,18 +143,16 @@ func (c *Client) SendWithAuth(req *http.Request, v interface{}) error {
143143
// Note: Here we do not want to `defer c.Unlock()` because we need `c.Send(...)`
144144
// to happen outside of the locked section.
145145

146-
if c.Token != nil {
147-
if !c.tokenExpiresAt.IsZero() && c.tokenExpiresAt.Sub(time.Now()) < RequestNewTokenBeforeExpiresIn {
148-
// c.Token will be updated in GetAccessToken call
149-
if _, err := c.GetAccessToken(req.Context()); err != nil {
150-
// c.Unlock()
151-
c.mu.Unlock()
152-
return err
153-
}
146+
if c.Token == nil || (!c.tokenExpiresAt.IsZero() && time.Until(c.tokenExpiresAt) < RequestNewTokenBeforeExpiresIn) {
147+
// c.Token will be updated in GetAccessToken call
148+
if _, err := c.GetAccessToken(req.Context()); err != nil {
149+
// c.Unlock()
150+
c.mu.Unlock()
151+
return err
154152
}
155-
156-
req.Header.Set("Authorization", "Bearer "+c.Token.Token)
157153
}
154+
155+
req.Header.Set("Authorization", "Bearer "+c.Token.Token)
158156
// Unlock the client mutex before sending the request, this allows multiple requests
159157
// to be in progress at the same time.
160158
// c.Unlock()

client_test.go

+7-11
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,15 @@ func (c *Client) sendWithAuth(req *http.Request, v interface{}) error {
6565
err := errors.New("TryLock succeeded inside sendWithAuth with mutex locked")
6666
return err
6767
}
68-
69-
if c.Token != nil {
70-
if !c.tokenExpiresAt.IsZero() && c.tokenExpiresAt.Sub(time.Now()) < RequestNewTokenBeforeExpiresIn {
71-
// c.Token will be updated in GetAccessToken call
72-
if _, err := c.GetAccessToken(req.Context()); err != nil {
73-
// c.Unlock()
74-
c.mu.Unlock()
75-
return err
76-
}
68+
if c.Token == nil || (!c.tokenExpiresAt.IsZero() && time.Until(c.tokenExpiresAt) < RequestNewTokenBeforeExpiresIn) {
69+
// c.Token will be updated in GetAccessToken call
70+
if _, err := c.GetAccessToken(req.Context()); err != nil {
71+
// c.Unlock()
72+
c.mu.Unlock()
73+
return err
7774
}
78-
79-
req.Header.Set("Authorization", "Bearer "+c.Token.Token)
8075
}
76+
req.Header.Set("Authorization", "Bearer "+c.Token.Token)
8177
// Unlock the client mutex before sending the request, this allows multiple requests
8278
// to be in progress at the same time.
8379
// c.Unlock()

0 commit comments

Comments
 (0)