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  }