DiskVisitor.java
package ru.volnenko.plugin.wagon;
import io.minio.MinioClient;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.SneakyThrows;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.net.URLConnection;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public final class DiskVisitor extends SimpleFileVisitor<Path> {
@NonNull
private final String basedir;
@NonNull
private final File source;
@NonNull
private final MinioClient minioClient;
@NonNull
private final String bucket;
public DiskVisitor(
@NonNull String basedir,
@NonNull File source,
@NonNull MinioClient minioClient,
@NonNull String bucket
) {
this.basedir = basedir;
this.source = source;
this.minioClient = minioClient;
this.bucket = bucket;
}
@Override
@SneakyThrows
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (Files.isDirectory(file)) return FileVisitResult.CONTINUE;
@NonNull final String relative = source.toURI().relativize(file.toUri()).toString();
@NonNull final String target = basedir + "/" + relative;
System.out.println("UPLOAD: " + target);
@NonNull final byte[] bytes = Files.readAllBytes(file);
@NonNull final ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
@NonNull final String mimeType = URLConnection.guessContentTypeFromName(file.toFile().getName());
minioClient.putObject(bucket, target, inputStream, mimeType);
return FileVisitResult.CONTINUE;
}
}