credentials/providers/static_sts.go (67 lines of code) (raw):

package providers import ( "errors" "os" ) type StaticSTSCredentialsProvider struct { accessKeyId string accessKeySecret string securityToken string } type StaticSTSCredentialsProviderBuilder struct { provider *StaticSTSCredentialsProvider } func NewStaticSTSCredentialsProviderBuilder() *StaticSTSCredentialsProviderBuilder { return &StaticSTSCredentialsProviderBuilder{ provider: &StaticSTSCredentialsProvider{}, } } func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeyId(accessKeyId string) *StaticSTSCredentialsProviderBuilder { builder.provider.accessKeyId = accessKeyId return builder } func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeySecret(accessKeySecret string) *StaticSTSCredentialsProviderBuilder { builder.provider.accessKeySecret = accessKeySecret return builder } func (builder *StaticSTSCredentialsProviderBuilder) WithSecurityToken(securityToken string) *StaticSTSCredentialsProviderBuilder { builder.provider.securityToken = securityToken return builder } func (builder *StaticSTSCredentialsProviderBuilder) Build() (provider *StaticSTSCredentialsProvider, err error) { if builder.provider.accessKeyId == "" { builder.provider.accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") } if builder.provider.accessKeyId == "" { err = errors.New("the access key id is empty") return } if builder.provider.accessKeySecret == "" { builder.provider.accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") } if builder.provider.accessKeySecret == "" { err = errors.New("the access key secret is empty") return } if builder.provider.securityToken == "" { builder.provider.securityToken = os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN") } if builder.provider.securityToken == "" { err = errors.New("the security token is empty") return } provider = builder.provider return } func (provider *StaticSTSCredentialsProvider) GetCredentials() (cc *Credentials, err error) { cc = &Credentials{ AccessKeyId: provider.accessKeyId, AccessKeySecret: provider.accessKeySecret, SecurityToken: provider.securityToken, ProviderName: provider.GetProviderName(), } return } func (provider *StaticSTSCredentialsProvider) GetProviderName() string { return "static_sts" }