getSignedUrl method

  1. @override
Future<String> getSignedUrl(
  1. String fileKey, {
  2. String? bucketName,
  3. int expireSeconds = 60,
  4. Map<String, dynamic>? params,
})

get signed url from oss server fileKey is the object name from oss bucketName is optional, we use the default bucketName as we defined in Client expireSeconds is optional, default expired time are 60 seconds

Implementation

@override
Future<String> getSignedUrl(
  String fileKey, {
  String? bucketName,
  int expireSeconds = 60,
  Map<String, dynamic>? params,
}) async {
  final String bucket = bucketName ?? this.bucketName;
  final Auth auth = await getAuth();
  final int expires = DateTime.now().secondsSinceEpoch() + expireSeconds;

  final String url = "https://$bucket.$endpoint/$fileKey";
  final Map<String, dynamic> parameters = {
    "OSSAccessKeyId": auth.accessKey,
    "Expires": expires,
    "Signature": auth.getSignature(expires, bucket, fileKey, params: params),
    "security-token": auth.encodedToken
  };
  parameters.addAll(params ?? {});
  final HttpRequest request = HttpRequest.get(url, parameters: parameters);

  return request.url;
}