BaseWagon.java

package ru.volnenko.plugin.wagon;

import io.minio.MinioClient;
import lombok.NonNull;
import lombok.SneakyThrows;
import org.apache.maven.wagon.StreamWagon;

public abstract class BaseWagon extends StreamWagon {

    @Override
    public boolean supportsDirectoryCopy() {
        return  true;
    }

    @NonNull
    public String getBasedir() {
        final String base = repository.getBasedir();
        if (base.endsWith("/")) return base.substring(0, base.length() -1);
        return base;
    }

    @NonNull
    public String getMinioPathname() {
        @NonNull final String bucket = getMinioBucket();
        final int length = bucket.length();
        return repository.getBasedir().substring(length+2);
    }

    @NonNull
    public String getMinioBucket() {
        return getBasedir().split("/")[1];
    }

    @NonNull
    public String getMinioHostname() {
        String host = System.getenv("MINIO_HOSTNAME");
        if (host == null) {
            host = System.getProperty("minio.hostname");
            if (host == null) {
                host = repository.getHost();
            }
        }
        return host;
    }

    @NonNull
    @SneakyThrows
    public MinioClient getMinioClient() {
        return new MinioClient(getMinioBasedir(), getMinioUsername(), getMinioPassword());
    }

    @NonNull
    public String getMinioBasedir() {
        return getMinioProtocol() + "://" + getMinioHostname();
    }

    @NonNull
    public String getMinioProtocol() {
        return repository.getProtocol();
    }

    @NonNull
    public String getMinioUsername() {
        String user = System.getenv("MINIO_USERNAME");
        if (user == null) {
            user = System.getProperty("minio.username");
            if (user == null) {
                user = authenticationInfo.getUserName();
                if (user == null) {
                    user = "";
                }
            }
        }
        return user;
    }

    @NonNull
    public String getMinioPassword() {
        String password = System.getenv("MINIO_PASSWORD");
        if (password == null) {
            password = System.getProperty("minio.password");
            if (password == null) {
                password = authenticationInfo.getPassword();
                if (password == null) {
                    password = "";
                }
            }
        }
        return password;
    }

}