static_sts.go raw
1 package providers
2
3 import (
4 "errors"
5 "os"
6 )
7
8 type StaticSTSCredentialsProvider struct {
9 accessKeyId string
10 accessKeySecret string
11 securityToken string
12 }
13
14 type StaticSTSCredentialsProviderBuilder struct {
15 provider *StaticSTSCredentialsProvider
16 }
17
18 func NewStaticSTSCredentialsProviderBuilder() *StaticSTSCredentialsProviderBuilder {
19 return &StaticSTSCredentialsProviderBuilder{
20 provider: &StaticSTSCredentialsProvider{},
21 }
22 }
23
24 func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeyId(accessKeyId string) *StaticSTSCredentialsProviderBuilder {
25 builder.provider.accessKeyId = accessKeyId
26 return builder
27 }
28
29 func (builder *StaticSTSCredentialsProviderBuilder) WithAccessKeySecret(accessKeySecret string) *StaticSTSCredentialsProviderBuilder {
30 builder.provider.accessKeySecret = accessKeySecret
31 return builder
32 }
33
34 func (builder *StaticSTSCredentialsProviderBuilder) WithSecurityToken(securityToken string) *StaticSTSCredentialsProviderBuilder {
35 builder.provider.securityToken = securityToken
36 return builder
37 }
38
39 func (builder *StaticSTSCredentialsProviderBuilder) Build() (provider *StaticSTSCredentialsProvider, err error) {
40 if builder.provider.accessKeyId == "" {
41 builder.provider.accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
42 }
43
44 if builder.provider.accessKeyId == "" {
45 err = errors.New("the access key id is empty")
46 return
47 }
48
49 if builder.provider.accessKeySecret == "" {
50 builder.provider.accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
51 }
52
53 if builder.provider.accessKeySecret == "" {
54 err = errors.New("the access key secret is empty")
55 return
56 }
57
58 if builder.provider.securityToken == "" {
59 builder.provider.securityToken = os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
60 }
61
62 if builder.provider.securityToken == "" {
63 err = errors.New("the security token is empty")
64 return
65 }
66
67 provider = builder.provider
68 return
69 }
70
71 func (provider *StaticSTSCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
72 cc = &Credentials{
73 AccessKeyId: provider.accessKeyId,
74 AccessKeySecret: provider.accessKeySecret,
75 SecurityToken: provider.securityToken,
76 ProviderName: provider.GetProviderName(),
77 }
78 return
79 }
80
81 func (provider *StaticSTSCredentialsProvider) GetProviderName() string {
82 return "static_sts"
83 }
84