env.go raw

   1  package credentials
   2  
   3  import "os"
   4  
   5  type EnvProvider struct {
   6  	retrieved bool
   7  }
   8  
   9  func NewEnvCredentials() *Credentials {
  10  	return NewCredentials(&EnvProvider{})
  11  }
  12  
  13  // Retrieve retrieves the keys from the environment.
  14  func (e *EnvProvider) Retrieve() (Value, error) {
  15  	e.retrieved = false
  16  
  17  	v := Value{
  18  		APIKey:    os.Getenv("EXOSCALE_API_KEY"),
  19  		APISecret: os.Getenv("EXOSCALE_API_SECRET"),
  20  	}
  21  
  22  	if !v.IsSet() {
  23  		return Value{}, ErrMissingIncomplete
  24  	}
  25  
  26  	e.retrieved = true
  27  
  28  	return v, nil
  29  }
  30  
  31  // IsExpired returns if the credentials have been retrieved.
  32  func (e *EnvProvider) IsExpired() bool {
  33  	return !e.retrieved
  34  }
  35