github.com/aliyun/credentials-go@v1.4.7/credentials/providers/static_sts.go (about)

     1  package providers
     2  
     3  import (
     4  	"errors"
     5  	"os"
     6  )
     7  
     8  type StaticSTSCredentialsProvider struct {
     9  	accessKeyId     string
    10  	accessKeySecret string
    11  	securityToken   string
    12  }
    13  
    14  type StaticSTSCredentialsProviderBuilder struct {
    15  	provider *StaticSTSCredentialsProvider
    16  }
    17  
    18  func NewStaticSTSCredentialsProviderBuilder() *StaticSTSCredentialsProviderBuilder {
    19  	return &StaticSTSCredentialsProviderBuilder{
    20  		provider: &StaticSTSCredentialsProvider{},
    21  	}
    22  }
    23  
    24  func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeyId(accessKeyId string) *StaticSTSCredentialsProviderBuilder {
    25  	builder.provider.accessKeyId = accessKeyId
    26  	return builder
    27  }
    28  
    29  func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeySecret(accessKeySecret string) *StaticSTSCredentialsProviderBuilder {
    30  	builder.provider.accessKeySecret = accessKeySecret
    31  	return builder
    32  }
    33  
    34  func (builder *StaticSTSCredentialsProviderBuilder) WithSecurityToken(securityToken string) *StaticSTSCredentialsProviderBuilder {
    35  	builder.provider.securityToken = securityToken
    36  	return builder
    37  }
    38  
    39  func (builder *StaticSTSCredentialsProviderBuilder) Build() (provider *StaticSTSCredentialsProvider, err error) {
    40  	if builder.provider.accessKeyId == "" {
    41  		builder.provider.accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
    42  	}
    43  
    44  	if builder.provider.accessKeyId == "" {
    45  		err = errors.New("the access key id is empty")
    46  		return
    47  	}
    48  
    49  	if builder.provider.accessKeySecret == "" {
    50  		builder.provider.accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
    51  	}
    52  
    53  	if builder.provider.accessKeySecret == "" {
    54  		err = errors.New("the access key secret is empty")
    55  		return
    56  	}
    57  
    58  	if builder.provider.securityToken == "" {
    59  		builder.provider.securityToken = os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
    60  	}
    61  
    62  	if builder.provider.securityToken == "" {
    63  		err = errors.New("the security token is empty")
    64  		return
    65  	}
    66  
    67  	provider = builder.provider
    68  	return
    69  }
    70  
    71  func (provider *StaticSTSCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
    72  	cc = &Credentials{
    73  		AccessKeyId:     provider.accessKeyId,
    74  		AccessKeySecret: provider.accessKeySecret,
    75  		SecurityToken:   provider.securityToken,
    76  		ProviderName:    provider.GetProviderName(),
    77  	}
    78  	return
    79  }
    80  
    81  func (provider *StaticSTSCredentialsProvider) GetProviderName() string {
    82  	return "static_sts"
    83  }