From a7aaeabc7873a0eafb4a7ecad7f65b018b7a9bc9 Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 24 Feb 2023 19:31:23 +0800
Subject: [PATCH] What's new? 1. Add license for dock. 2. Modify the logic corresponding to the firmware file and device type. 3. Add multiple mqtt clients options. 4. Modify the structure of the interface for obtaining the device list. 5. Fixed some issues.
---
src/main/java/com/dji/sample/component/oss/service/impl/MinIOServiceImpl.java | 91 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 73 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/dji/sample/component/oss/service/impl/MinIOServiceImpl.java b/src/main/java/com/dji/sample/component/oss/service/impl/MinIOServiceImpl.java
index 76d4e5d..cafeb66 100644
--- a/src/main/java/com/dji/sample/component/oss/service/impl/MinIOServiceImpl.java
+++ b/src/main/java/com/dji/sample/component/oss/service/impl/MinIOServiceImpl.java
@@ -1,21 +1,23 @@
package com.dji.sample.component.oss.service.impl;
-import com.dji.sample.component.oss.model.MinIOConfiguration;
+import com.dji.sample.component.oss.model.OssConfiguration;
+import com.dji.sample.component.oss.model.enums.OssTypeEnum;
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.*;
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.ByteArrayInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
+import java.util.Objects;
/**
* @author sean
@@ -26,16 +28,20 @@
@Slf4j
public class MinIOServiceImpl implements IOssService {
- @Autowired(required = false)
private MinioClient client;
+
+ @Override
+ public String getOssType() {
+ return OssTypeEnum.MINIO.getType();
+ }
@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);
+ AssumeRoleProvider provider = new AssumeRoleProvider(OssConfiguration.endpoint, OssConfiguration.accessKey,
+ OssConfiguration.secretKey, Math.toIntExact(OssConfiguration.expire),
+ null, OssConfiguration.region, null, null, null, null);
+ return new CredentialsDTO(provider.fetch(), OssConfiguration.expire);
} catch (NoSuchAlgorithmException e) {
log.debug("Failed to obtain sts.");
e.printStackTrace();
@@ -48,19 +54,68 @@
try {
return new URL(
client.getPresignedObjectUrl(
- GetPresignedObjectUrlArgs.builder()
- .method(Method.GET)
- .bucket(bucket)
- .object(objectKey)
- .expiry(MinIOConfiguration.expire)
- .build()));
+ GetPresignedObjectUrlArgs.builder()
+ .method(Method.GET)
+ .bucket(bucket)
+ .object(objectKey)
+ .expiry(Math.toIntExact(OssConfiguration.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();
+ throw new RuntimeException("The file does not exist on the OssConfiguration.");
}
- return null;
}
+ @Override
+ public Boolean deleteObject(String bucket, String objectKey) {
+ try {
+ client.removeObject(RemoveObjectArgs.builder().bucket(bucket).object(objectKey).build());
+ } catch (MinioException | NoSuchAlgorithmException | IOException | InvalidKeyException e) {
+ log.error("Failed to delete file.");
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public InputStream getObject(String bucket, String objectKey) {
+ try {
+ GetObjectResponse object = client.getObject(GetObjectArgs.builder().bucket(bucket).object(objectKey).build());
+ return new ByteArrayInputStream(object.readAllBytes());
+ } catch (ErrorResponseException | InsufficientDataException | InternalException | InvalidKeyException | InvalidResponseException | IOException | NoSuchAlgorithmException | ServerException | XmlParserException e) {
+ e.printStackTrace();
+ }
+ return InputStream.nullInputStream();
+ }
+
+ @Override
+ public void putObject(String bucket, String objectKey, InputStream input) {
+ try {
+ client.statObject(StatObjectArgs.builder().bucket(bucket).object(objectKey).build());
+ throw new RuntimeException("The filename already exists.");
+ } catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException e) {
+ log.info("The file does not exist, start uploading.");
+ try {
+ ObjectWriteResponse response = client.putObject(
+ PutObjectArgs.builder().bucket(bucket).object(objectKey).stream(input, input.available(), 0).build());
+ log.info("Upload File: {}", response.etag());
+ } catch (MinioException | IOException | InvalidKeyException | NoSuchAlgorithmException ex) {
+ log.error("Failed to upload File {}.", objectKey);
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ public void createClient() {
+ if (Objects.nonNull(this.client)) {
+ return;
+ }
+ this.client = MinioClient.builder()
+ .endpoint(OssConfiguration.endpoint)
+ .credentials(OssConfiguration.accessKey, OssConfiguration.secretKey)
+ .region(OssConfiguration.region)
+ .build();
+ }
}
--
Gitblit v1.9.3