92 lines
3.3 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|