2025-10-21 00:47:33 +02:00

92 lines
3.3 KiB
Java

package de.thehomecraft.S3;
import io.minio.*;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;
import io.minio.messages.Item;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class S3Uploader {
public void uploadDirectory(File baseDir, File currentDir) throws Exception {
MinioClient client = MinioClient.builder()
.endpoint("http://85.214.239.211:9004")
.credentials(new CredProvid().s3AccessKey, new CredProvid().s3SecretKey)
.build();
for (File file : Objects.requireNonNull(currentDir.listFiles())) {
if (file.isDirectory()) {
uploadDirectory(baseDir, file); // recurse into subdirectories
} else {
//String objectName = baseDir.toPath().relativize(file.toPath()).toString().replace("\\", "/");
String objectName = file.getPath().substring(file.getPath().indexOf(baseDir.getName())).replaceAll("\\\\", "/");
System.out.println("Uploading: " + objectName);
try (FileInputStream fis = new FileInputStream(file)) {
client.putObject(
PutObjectArgs.builder()
.bucket("repofiles")
.object(objectName)
.stream(fis, file.length(), -1)
.contentType("application/octet-stream")
.build()
);
}
}
}
}
public void deleteRemoteDirectory(String repoName) throws Exception {
String bucketName = "repofiles";
MinioClient client = MinioClient.builder()
.endpoint("http://85.214.239.211:9004")
.credentials(new CredProvid().s3AccessKey, new CredProvid().s3SecretKey)
.build();
System.out.println("Deleting "+repoName);
String prefix = repoName+"/";
// List all objects under the given prefix
Iterable<Result<Item>> results = client.listObjects(
ListObjectsArgs.builder()
.bucket(bucketName)
.prefix(prefix)
.recursive(true)
.build()
);
boolean foundAny = false;
for (Result<Item> result : results) {
Item item = result.get();
String objectName = item.objectName();
try {
client.removeObject(
RemoveObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build()
);
System.out.println("Deleted: " + objectName);
foundAny = true;
} catch (Exception e) {
System.err.println("Failed to delete: " + objectName + " (" + e.getMessage() + ")");
}
}
if (!foundAny) {
System.out.println("No objects found under prefix: " + prefix);
} else {
System.out.println("Finished deleting remote directory: " + prefix);
}
}
}