static_ak.go raw

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