github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/credentials/access_token.go (about) 1 package credentials 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/ydb-platform/ydb-go-sdk/v3/internal/secret" 8 "github.com/ydb-platform/ydb-go-sdk/v3/internal/stack" 9 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xstring" 10 ) 11 12 var ( 13 _ Credentials = (*AccessToken)(nil) 14 _ fmt.Stringer = (*AccessToken)(nil) 15 _ AccessTokenCredentialsOption = SourceInfoOption("") 16 ) 17 18 type AccessTokenCredentialsOption interface { 19 ApplyAccessTokenCredentialsOption(c *AccessToken) 20 } 21 22 // AccessToken implements Credentials interface with static 23 // authorization parameters. 24 type AccessToken struct { 25 token string 26 sourceInfo string 27 } 28 29 func NewAccessTokenCredentials(token string, opts ...AccessTokenCredentialsOption) *AccessToken { 30 c := &AccessToken{ 31 token: token, 32 sourceInfo: stack.Record(1), 33 } 34 for _, opt := range opts { 35 if opt != nil { 36 opt.ApplyAccessTokenCredentialsOption(c) 37 } 38 } 39 40 return c 41 } 42 43 // Token implements Credentials. 44 func (c AccessToken) Token(_ context.Context) (string, error) { 45 return c.token, nil 46 } 47 48 // Token implements Credentials. 49 func (c AccessToken) String() string { 50 buffer := xstring.Buffer() 51 defer buffer.Free() 52 buffer.WriteString("AccessToken{Token:") 53 fmt.Fprintf(buffer, "%q", secret.Token(c.token)) 54 if c.sourceInfo != "" { 55 buffer.WriteString(",From:") 56 fmt.Fprintf(buffer, "%q", c.sourceInfo) 57 } 58 buffer.WriteByte('}') 59 60 return buffer.String() 61 }