fetchScopeLimitCredentials method
Future<SessionQCloudCredentials>
fetchScopeLimitCredentials(
- List<
STSCredentialScope?> stsCredentialScopes
override
Implementation
@override
Future<SessionQCloudCredentials> fetchScopeLimitCredentials(List<STSCredentialScope?> stsCredentialScopes) async {
// 先从缓存中获取,当scope一样的时候并且没有过期则使用缓存,否则调研业务回调方法获取最新的临时秘钥
// 用于解决类似分块上传这种频繁但是秘钥大概率一样的情况
String stsCredentialScopesJson = jsonifyScopes(stsCredentialScopes);
if (kDebugMode) {
print(stsCredentialScopesJson);
}
int scopeId = stsCredentialScopesJson.hashCode;
SessionQCloudCredentials? credentials = lookupValidCredentials(scopeId);
if (credentials == null) {
credentials = await Cos().getFetchScopeLimitCredentials().fetchScopeLimitCredentials(stsCredentialScopes.map((e) => STSCredentialScope(
action: e == null ? '' : (e.action),
region: e == null ? '' : (e.region),
bucket: e == null ? '' : (e.bucket ?? ''),
prefix: e == null ? '' : (e.prefix ?? '')
)).toList());
cacheCredentialsAndCleanUp(scopeId, credentials);
}
return credentials;
}