env.go raw

   1  package providers
   2  
   3  import (
   4  	"fmt"
   5  	"os"
   6  )
   7  
   8  type EnvironmentVariableCredentialsProvider struct {
   9  }
  10  
  11  type EnvironmentVariableCredentialsProviderBuilder struct {
  12  	provider *EnvironmentVariableCredentialsProvider
  13  }
  14  
  15  func NewEnvironmentVariableCredentialsProviderBuilder() *EnvironmentVariableCredentialsProviderBuilder {
  16  	return &EnvironmentVariableCredentialsProviderBuilder{
  17  		provider: &EnvironmentVariableCredentialsProvider{},
  18  	}
  19  }
  20  
  21  func (builder *EnvironmentVariableCredentialsProviderBuilder) Build() (provider *EnvironmentVariableCredentialsProvider, err error) {
  22  	provider = builder.provider
  23  	return
  24  }
  25  
  26  func (provider *EnvironmentVariableCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
  27  	accessKeyId := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
  28  
  29  	if accessKeyId == "" {
  30  		err = fmt.Errorf("unable to get credentials from enviroment variables, Access key ID must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_ID)")
  31  		return
  32  	}
  33  
  34  	accessKeySecret := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
  35  
  36  	if accessKeySecret == "" {
  37  		err = fmt.Errorf("unable to get credentials from enviroment variables, Access key secret must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_SECRET)")
  38  		return
  39  	}
  40  
  41  	securityToken := os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
  42  
  43  	cc = &Credentials{
  44  		AccessKeyId:     accessKeyId,
  45  		AccessKeySecret: accessKeySecret,
  46  		SecurityToken:   securityToken,
  47  		ProviderName:    provider.GetProviderName(),
  48  	}
  49  
  50  	return
  51  }
  52  
  53  func (provider *EnvironmentVariableCredentialsProvider) GetProviderName() string {
  54  	return "env"
  55  }
  56