package com.dji.sample.component.oss.service.impl;
|
|
import com.dji.sample.component.oss.model.MinIOConfiguration;
|
import com.dji.sample.component.oss.service.IOssService;
|
import com.dji.sample.media.model.CredentialsDTO;
|
import io.minio.GetPresignedObjectUrlArgs;
|
import io.minio.MinioClient;
|
import io.minio.credentials.AssumeRoleProvider;
|
import io.minio.errors.*;
|
import io.minio.http.Method;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.IOException;
|
import java.net.URL;
|
import java.security.InvalidKeyException;
|
import java.security.NoSuchAlgorithmException;
|
|
/**
|
* @author sean
|
* @version 0.3
|
* @date 2021/12/23
|
*/
|
@Service
|
@Slf4j
|
public class MinIOServiceImpl implements IOssService {
|
|
@Autowired
|
private MinioClient client;
|
|
@Override
|
public CredentialsDTO getCredentials() {
|
try {
|
AssumeRoleProvider provider = new AssumeRoleProvider(MinIOConfiguration.endpoint, MinIOConfiguration.accessKey,
|
MinIOConfiguration.secretKey, MinIOConfiguration.expire,
|
null, null, null, null, null, null);
|
return new CredentialsDTO(provider.fetch(), MinIOConfiguration.expire);
|
} catch (NoSuchAlgorithmException e) {
|
log.debug("Failed to obtain sts.");
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
@Override
|
public URL getObjectUrl(String bucket, String objectKey) {
|
try {
|
return new URL(
|
client.getPresignedObjectUrl(
|
GetPresignedObjectUrlArgs.builder()
|
.method(Method.GET)
|
.bucket(bucket)
|
.object(objectKey)
|
.expiry(MinIOConfiguration.expire)
|
.build()));
|
} catch (ErrorResponseException | InsufficientDataException | InternalException |
|
InvalidKeyException | InvalidResponseException | IOException |
|
NoSuchAlgorithmException | XmlParserException | ServerException e) {
|
log.error("The file does not exist on the oss.");
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
}
|