103 lines
3.2 KiB
Java
103 lines
3.2 KiB
Java
package com.kifi.api.service;
|
|
|
|
import lombok.Data;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
|
import reactor.core.publisher.Mono;
|
|
|
|
@Service
|
|
public class MinioServiceClient {
|
|
|
|
private final WebClient webClient;
|
|
|
|
@Value("${spring.minio.service.url:http://minio-service:1500}")
|
|
private String minioServiceUrl;
|
|
|
|
@Value("${spring.minio.service.bucket:kifi}")
|
|
private String bucketName;
|
|
|
|
public MinioServiceClient(WebClient.Builder webClientBuilder) {
|
|
this.webClient = webClientBuilder.build();
|
|
}
|
|
|
|
@Data
|
|
public static class MinioUploadRequest {
|
|
private String bucketName;
|
|
private String directoryPath;
|
|
private String contentType;
|
|
private String fileName;
|
|
private String fileContentBase64;
|
|
private boolean overwrite;
|
|
}
|
|
|
|
@Data
|
|
public static class MinioDeleteRequest {
|
|
private String bucketName;
|
|
private String type;
|
|
private String filePath;
|
|
}
|
|
|
|
@Data
|
|
public static class MinioResponse {
|
|
private boolean success;
|
|
private String message;
|
|
private String filePath;
|
|
}
|
|
|
|
public Mono<MinioResponse> uploadFile(String directoryPath, String contentType, String fileName, String base64Content) {
|
|
MinioUploadRequest request = new MinioUploadRequest();
|
|
request.setBucketName(bucketName);
|
|
request.setDirectoryPath(directoryPath);
|
|
request.setContentType(contentType);
|
|
request.setFileName(fileName);
|
|
request.setFileContentBase64(base64Content);
|
|
request.setOverwrite(true);
|
|
|
|
return webClient.post()
|
|
.uri(minioServiceUrl + "/api/v1/minio/upload")
|
|
.bodyValue(request)
|
|
.retrieve()
|
|
.bodyToMono(MinioResponse.class);
|
|
}
|
|
|
|
public Mono<MinioResponse> deleteFile(String contentType, String filePath) {
|
|
MinioDeleteRequest request = new MinioDeleteRequest();
|
|
request.setBucketName(bucketName);
|
|
request.setType(contentType);
|
|
request.setFilePath(filePath);
|
|
|
|
return webClient.method(org.springframework.http.HttpMethod.DELETE)
|
|
.uri(minioServiceUrl + "/api/v1/minio/file")
|
|
.bodyValue(request)
|
|
.retrieve()
|
|
.bodyToMono(MinioResponse.class);
|
|
}
|
|
@Data
|
|
public static class MinioDownloadRequest {
|
|
private String bucketName;
|
|
private String type;
|
|
private String filePath;
|
|
}
|
|
|
|
@Data
|
|
public static class MinioDownloadResponse {
|
|
private boolean success;
|
|
private String message;
|
|
private String base64Content;
|
|
}
|
|
|
|
public Mono<MinioDownloadResponse> downloadFile(String contentType, String filePath) {
|
|
MinioDownloadRequest request = new MinioDownloadRequest();
|
|
request.setBucketName(bucketName);
|
|
request.setType(contentType);
|
|
request.setFilePath(filePath);
|
|
|
|
return webClient.post()
|
|
.uri(minioServiceUrl + "/api/v1/minio/download")
|
|
.bodyValue(request)
|
|
.retrieve()
|
|
.bodyToMono(MinioDownloadResponse.class);
|
|
}
|
|
}
|