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