...
1
2
3
4
5
6
7 package credproviders
8
9 import (
10 "os"
11
12 "go.mongodb.org/mongo-driver/internal/aws/credentials"
13 )
14
15
16 const envProviderName = "EnvProvider"
17
18
19 type EnvVar string
20
21
22 func (ev EnvVar) Get() string {
23 return os.Getenv(string(ev))
24 }
25
26
27
28 type EnvProvider struct {
29 AwsAccessKeyIDEnv EnvVar
30 AwsSecretAccessKeyEnv EnvVar
31 AwsSessionTokenEnv EnvVar
32
33 retrieved bool
34 }
35
36
37 func NewEnvProvider() *EnvProvider {
38 return &EnvProvider{
39
40 AwsAccessKeyIDEnv: EnvVar("AWS_ACCESS_KEY_ID"),
41
42 AwsSecretAccessKeyEnv: EnvVar("AWS_SECRET_ACCESS_KEY"),
43
44 AwsSessionTokenEnv: EnvVar("AWS_SESSION_TOKEN"),
45 }
46 }
47
48
49 func (e *EnvProvider) Retrieve() (credentials.Value, error) {
50 e.retrieved = false
51
52 v := credentials.Value{
53 AccessKeyID: e.AwsAccessKeyIDEnv.Get(),
54 SecretAccessKey: e.AwsSecretAccessKeyEnv.Get(),
55 SessionToken: e.AwsSessionTokenEnv.Get(),
56 ProviderName: envProviderName,
57 }
58 err := verify(v)
59 if err == nil {
60 e.retrieved = true
61 }
62
63 return v, err
64 }
65
66
67 func (e *EnvProvider) IsExpired() bool {
68 return !e.retrieved
69 }
70
View as plain text