-
Notifications
You must be signed in to change notification settings - Fork 117
/
Copy pathBaseClient.cs
32 lines (26 loc) · 1.14 KB
/
BaseClient.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
namespace Masa.Contrib.Storage.ObjectStorage.Aliyun;
public abstract class BaseClient
{
protected readonly ICredentialProvider CredentialProvider;
protected readonly AliyunStorageOptions Options;
public BaseClient(ICredentialProvider credentialProvider,
AliyunStorageOptions options)
{
CredentialProvider = credentialProvider;
Options = options;
}
public virtual IOss GetClient()
{
var credential = GetCredential();
return new OssClient(Options.Endpoint, credential.AccessKeyId, credential.AccessKeySecret, credential.SecurityToken);
}
public virtual (string AccessKeyId, string AccessKeySecret, string? SecurityToken) GetCredential()
{
if (!CredentialProvider.SupportSts)
return new(Options.AccessKeyId, Options.AccessKeySecret, null);
var securityToken = CredentialProvider.GetSecurityToken();
return new(securityToken.AccessKeyId, securityToken.AccessKeySecret, securityToken.SessionToken);
}
}