static_ak.go raw
1 package providers
2
3 import (
4 "errors"
5 "os"
6 )
7
8 type StaticAKCredentialsProvider struct {
9 accessKeyId string
10 accessKeySecret string
11 }
12
13 type StaticAKCredentialsProviderBuilder struct {
14 provider *StaticAKCredentialsProvider
15 }
16
17 func NewStaticAKCredentialsProviderBuilder() *StaticAKCredentialsProviderBuilder {
18 return &StaticAKCredentialsProviderBuilder{
19 provider: &StaticAKCredentialsProvider{},
20 }
21 }
22
23 func (builder *StaticAKCredentialsProviderBuilder) WithAccessKeyId(accessKeyId string) *StaticAKCredentialsProviderBuilder {
24 builder.provider.accessKeyId = accessKeyId
25 return builder
26 }
27
28 func (builder *StaticAKCredentialsProviderBuilder) WithAccessKeySecret(accessKeySecret string) *StaticAKCredentialsProviderBuilder {
29 builder.provider.accessKeySecret = accessKeySecret
30 return builder
31 }
32
33 func (builder *StaticAKCredentialsProviderBuilder) Build() (provider *StaticAKCredentialsProvider, err error) {
34 if builder.provider.accessKeyId == "" {
35 builder.provider.accessKeyId = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
36 }
37
38 if builder.provider.accessKeyId == "" {
39 err = errors.New("the access key id is empty")
40 return
41 }
42
43 if builder.provider.accessKeySecret == "" {
44 builder.provider.accessKeySecret = os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
45 }
46
47 if builder.provider.accessKeySecret == "" {
48 err = errors.New("the access key secret is empty")
49 return
50 }
51
52 provider = builder.provider
53 return
54 }
55
56 func (provider *StaticAKCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
57 cc = &Credentials{
58 AccessKeyId: provider.accessKeyId,
59 AccessKeySecret: provider.accessKeySecret,
60 ProviderName: provider.GetProviderName(),
61 }
62 return
63 }
64
65 func (provider *StaticAKCredentialsProvider) GetProviderName() string {
66 return "static_ak"
67 }
68