@@ -6,41 +6,43 @@ import (
66 "time"
77)
88
9- // ExternalTokenProvider provides tokens from an external source (passthrough)
9+ // ExternalTokenProvider provides tokens from an external source (passthrough).
10+ // This provider calls a user-supplied function to retrieve tokens on-demand.
1011type ExternalTokenProvider struct {
11- tokenFunc func () (string , error )
12- tokenType string
12+ tokenSource func () (string , error )
13+ tokenType string
1314}
1415
1516// NewExternalTokenProvider creates a provider that gets tokens from an external function
16- func NewExternalTokenProvider (tokenFunc func () (string , error )) * ExternalTokenProvider {
17+ func NewExternalTokenProvider (tokenSource func () (string , error )) * ExternalTokenProvider {
1718 return & ExternalTokenProvider {
18- tokenFunc : tokenFunc ,
19- tokenType : "Bearer" ,
19+ tokenSource : tokenSource ,
20+ tokenType : "Bearer" ,
2021 }
2122}
2223
2324// NewExternalTokenProviderWithType creates a provider with a custom token type
24- func NewExternalTokenProviderWithType (tokenFunc func () (string , error ), tokenType string ) * ExternalTokenProvider {
25+ func NewExternalTokenProviderWithType (tokenSource func () (string , error ), tokenType string ) * ExternalTokenProvider {
2526 return & ExternalTokenProvider {
26- tokenFunc : tokenFunc ,
27- tokenType : tokenType ,
27+ tokenSource : tokenSource ,
28+ tokenType : tokenType ,
2829 }
2930}
3031
3132// GetToken retrieves the token from the external source
3233func (p * ExternalTokenProvider ) GetToken (ctx context.Context ) (* Token , error ) {
33- if p .tokenFunc == nil {
34- return nil , fmt .Errorf ("external token provider: token function is nil" )
34+ // Check for cancellation first
35+ if err := ctx .Err (); err != nil {
36+ return nil , fmt .Errorf ("external token provider: context cancelled: %w" , err )
3537 }
3638
37- accessToken , err := p .tokenFunc ()
38- if err != nil {
39- return nil , fmt .Errorf ("external token provider: failed to get token: %w" , err )
39+ if p .tokenSource == nil {
40+ return nil , fmt .Errorf ("external token provider: token source is nil" )
4041 }
4142
42- if accessToken == "" {
43- return nil , fmt .Errorf ("external token provider: empty token returned" )
43+ accessToken , err := p .tokenSource ()
44+ if err != nil {
45+ return nil , fmt .Errorf ("external token provider: failed to get token: %w" , err )
4446 }
4547
4648 return & Token {
0 commit comments