All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.camel.component.minio.MinioConfiguration Maven / Gradle / Ivy

There is a newer version: 4.10.2
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.camel.component.minio;

import java.time.ZonedDateTime;

import io.minio.MinioClient;
import io.minio.ServerSideEncryption;
import io.minio.ServerSideEncryptionCustomerKey;
import okhttp3.OkHttpClient;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
import org.apache.camel.spi.UriPath;

@UriParams
public class MinioConfiguration implements Cloneable {

    @UriPath(description = "Bucket name")
    @Metadata(required = true)
    private String bucketName;

    @UriParam(label = "common")
    private String endpoint;
    @UriParam(label = "common")
    private Integer proxyPort;
    @UriParam(label = "common")
    private boolean secure;
    @UriParam(label = "common")
    private String region;
    @UriParam(label = "advanced")
    private OkHttpClient customHttpClient;

    @UriParam(label = "security", secret = true)
    private String accessKey;
    @UriParam(label = "security", secret = true)
    private String secretKey;

    @UriParam(label = "common", defaultValue = "true")
    private boolean autoCreateBucket = true;
    @UriParam(label = "common", defaultValue = "false")
    private boolean objectLock;
    @UriParam(label = "common")
    private String policy;
    @UriParam(label = "security")
    private ServerSideEncryptionCustomerKey serverSideEncryptionCustomerKey;
    @UriParam(label = "security")
    private ServerSideEncryption serverSideEncryption;
    @UriParam(label = "common")
    @Metadata(autowired = true)
    private MinioClient minioClient;

    @UriParam(label = "consumer", defaultValue = "10")
    private int maxMessagesPerPoll = 10;
    @UriParam(label = "consumer", defaultValue = "60")
    private int maxConnections = 50 + maxMessagesPerPoll;
    @UriParam(label = "consumer")
    private String objectName;
    @UriParam(label = "consumer")
    private String delimiter;
    @UriParam(label = "consumer")
    private boolean includeUserMetadata;
    @UriParam(label = "consumer")
    private boolean includeVersions;
    @UriParam(label = "consumer")
    private String prefix;
    @UriParam(label = "consumer")
    private boolean recursive;
    @UriParam(label = "consumer")
    private String startAfter;
    @UriParam(label = "consumer")
    private boolean useVersion1;
    @UriParam(label = "consumer")
    private boolean includeFolders;
    @UriParam(label = "consumer")
    private long offset;
    @UriParam(label = "consumer")
    private long length;
    @UriParam(label = "consumer")
    private String versionId;
    @UriParam(label = "consumer")
    private String matchETag;
    @UriParam(label = "consumer")
    private String notMatchETag;
    @UriParam(label = "consumer")
    private ZonedDateTime modifiedSince;
    @UriParam(label = "consumer")
    private ZonedDateTime unModifiedSince;
    @UriParam(label = "consumer")
    private String destinationBucketName;
    @UriParam(label = "consumer")
    private String destinationObjectName;
    @UriParam(label = "consumer", defaultValue = "true")
    private boolean deleteAfterRead = true;
    @UriParam(label = "consumer", defaultValue = "false")
    private boolean moveAfterRead;
    @UriParam(label = "consumer", defaultValue = "false")
    private boolean bypassGovernanceMode;
    @UriParam(label = "consumer", defaultValue = "true")
    private boolean includeBody = true;
    @UriParam(label = "consumer", defaultValue = "true")
    private boolean autoCloseBody = true;

    @UriParam(label = "producer")
    private String keyName;
    @UriParam(label = "producer")
    private boolean deleteAfterWrite;
    @UriParam(label = "producer")
    private String storageClass;
    @UriParam(label = "producer",
              enums = "copyObject,listObjects,deleteObject,deleteObjects,deleteBucket,listBuckets,getObject,getObjectRange,createDownloadLink,createUploadLink")
    private MinioOperations operation;
    @UriParam(label = "producer")
    private boolean pojoRequest;

    public String getEndpoint() {
        return endpoint;
    }

    /**
     * Endpoint can be an URL, domain name, IPv4 address or IPv6 address.
     */
    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    public Integer getProxyPort() {
        return proxyPort;
    }

    /**
     * TCP/IP port number. 80 and 443 are used as defaults for HTTP and HTTPS.
     */
    public void setProxyPort(Integer proxyPort) {
        this.proxyPort = proxyPort;
    }

    public boolean isSecure() {
        return secure;
    }

    /**
     * Flag to indicate to use secure connection to minio service or not.
     */
    public void setSecure(boolean secure) {
        this.secure = secure;
    }

    public String getRegion() {
        return region;
    }

    /**
     * The region in which Minio client needs to work. When using this parameter, the configuration will expect the
     * lowercase name of the region (for example ap-east-1). You'll need to use the name Region.EU_WEST_1.id()
     */
    public void setRegion(String region) {
        this.region = region;
    }

    public OkHttpClient getCustomHttpClient() {
        return customHttpClient;
    }

    /**
     * Set custom HTTP client for authenticated access.
     */
    public void setCustomHttpClient(OkHttpClient customHttpClient) {
        this.customHttpClient = customHttpClient;
    }

    public String getAccessKey() {
        return accessKey;
    }

    /**
     * Amazon AWS Secret Access Key or Minio Access Key. If not set camel will connect to service for anonymous access.
     */
    public void setAccessKey(String accessKey) {
        this.accessKey = accessKey;
    }

    public String getSecretKey() {
        return secretKey;
    }

    /**
     * Amazon AWS Access Key Id or Minio Secret Key. If not set camel will connect to service for anonymous access.
     */
    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }

    public String getBucketName() {
        return bucketName;
    }

    /**
     * Name of the bucket. The bucket will be created if it doesn't already exists.
     */
    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }

    public boolean isAutoCreateBucket() {
        return autoCreateBucket;
    }

    /**
     * Setting the autocreation of the bucket if bucket name not exist.
     */
    public void setAutoCreateBucket(boolean autoCreateBucket) {
        this.autoCreateBucket = autoCreateBucket;
    }

    public boolean isObjectLock() {
        return objectLock;
    }

    /**
     * Set when creating new bucket.
     */
    public void setObjectLock(boolean objectLock) {
        this.objectLock = objectLock;
    }

    public String getPolicy() {
        return policy;
    }

    /**
     * The policy for this queue to set in the method.
     */
    public void setPolicy(String policy) {
        this.policy = policy;
    }

    public ServerSideEncryptionCustomerKey getServerSideEncryptionCustomerKey() {
        return serverSideEncryptionCustomerKey;
    }

    /**
     * Server-side encryption for source object while copy/move objects.
     */
    public void setServerSideEncryptionCustomerKey(ServerSideEncryptionCustomerKey serverSideEncryptionCustomerKey) {
        this.serverSideEncryptionCustomerKey = serverSideEncryptionCustomerKey;
    }

    public ServerSideEncryption getServerSideEncryption() {
        return serverSideEncryption;
    }

    /**
     * Server-side encryption.
     */
    public void setServerSideEncryption(ServerSideEncryption serverSideEncryption) {
        this.serverSideEncryption = serverSideEncryption;
    }

    public MinioClient getMinioClient() {
        return minioClient;
    }

    /**
     * Reference to a Minio Client object in the registry.
     */
    public void setMinioClient(MinioClient minioClient) {
        this.minioClient = minioClient;
    }

    public int getMaxMessagesPerPoll() {
        return maxMessagesPerPoll;
    }

    /**
     * Gets the maximum number of messages as a limit to poll at each polling.
     * 

* Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a * negative number to set it as unlimited. */ public void setMaxMessagesPerPoll(int maxMessagesPerPoll) { this.maxMessagesPerPoll = maxMessagesPerPoll; } public int getMaxConnections() { return maxConnections; } /** * Set the maxConnections parameter in the minio client configuration */ public void setMaxConnections(int maxConnections) { this.maxConnections = maxConnections; } public String getObjectName() { return objectName; } /** * To get the object from the bucket with the given object name. */ public void setObjectName(String objectName) { this.objectName = objectName; } public String getDelimiter() { return delimiter; } /** * The delimiter which is used in the ListObjectsRequest to only consume objects we are interested in. */ public void setDelimiter(String delimiter) { this.delimiter = delimiter; } public boolean isIncludeUserMetadata() { return includeUserMetadata; } /** * The flag which is used in the ListObjectsRequest to get objects with user meta data. */ public void setIncludeUserMetadata(boolean includeUserMetadata) { this.includeUserMetadata = includeUserMetadata; } public boolean isIncludeVersions() { return includeVersions; } /** * The flag which is used in the ListObjectsRequest to get objects with versioning. */ public void setIncludeVersions(boolean includeVersions) { this.includeVersions = includeVersions; } public boolean isIncludeFolders() { return includeFolders; } /** * The flag which is used in the ListObjectsRequest to set include folders. */ public void setIncludeFolders(boolean includeFolders) { this.includeFolders = includeFolders; } public String getPrefix() { return prefix; } /** * Object name starts with prefix. */ public void setPrefix(String prefix) { this.prefix = prefix; } public boolean isRecursive() { return recursive; } /** * List recursively than directory structure emulation. */ public void setRecursive(boolean recursive) { this.recursive = recursive; } public String getStartAfter() { return startAfter; } /** * list objects in bucket after this object name. */ public void setStartAfter(String startAfter) { this.startAfter = startAfter; } public boolean isUseVersion1() { return useVersion1; } /** * when true, version 1 of REST API is used. */ public void setUseVersion1(boolean useVersion1) { this.useVersion1 = useVersion1; } public long getOffset() { return offset; } /** * Start byte position of object data. */ public void setOffset(long offset) { this.offset = offset; } public long getLength() { return length; } /** * Number of bytes of object data from offset. */ public void setLength(long length) { this.length = length; } public String getVersionId() { return versionId; } /** * Set specific version_ID of a object when deleting the object. */ public void setVersionId(String versionId) { this.versionId = versionId; } public String getMatchETag() { return matchETag; } /** * Set match ETag parameter for get object(s). */ public void setMatchETag(String matchETag) { this.matchETag = matchETag; } public String getNotMatchETag() { return notMatchETag; } /** * Set not match ETag parameter for get object(s). */ public void setNotMatchETag(String notMatchETag) { this.notMatchETag = notMatchETag; } public ZonedDateTime getModifiedSince() { return modifiedSince; } /** * Set modified since parameter for get object(s). */ public void setModifiedSince(ZonedDateTime modifiedSince) { this.modifiedSince = modifiedSince; } public ZonedDateTime getUnModifiedSince() { return unModifiedSince; } /** * Set un modified since parameter for get object(s). */ public void setUnModifiedSince(ZonedDateTime unModifiedSince) { this.unModifiedSince = unModifiedSince; } public String getDestinationBucketName() { return destinationBucketName; } /** * Destination bucket name. */ public void setDestinationBucketName(String destinationBucketName) { this.destinationBucketName = destinationBucketName; } public String getDestinationObjectName() { return destinationObjectName; } /** * Destination object name. */ public void setDestinationObjectName(String destinationObjectName) { this.destinationObjectName = destinationObjectName; } public boolean isDeleteAfterRead() { return deleteAfterRead; } /** * Delete objects from Minio after they have been retrieved. The delete is only performed if the Exchange is * committed. If a rollback occurs, the object is not deleted. *

* If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you * need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the * {@link MinioConstants#BUCKET_NAME} and {@link MinioConstants#OBJECT_NAME} headers, or only the * {@link MinioConstants#OBJECT_NAME} header. */ public void setDeleteAfterRead(boolean deleteAfterRead) { this.deleteAfterRead = deleteAfterRead; } public boolean isMoveAfterRead() { return moveAfterRead; } /** * Move objects from bucket to a different bucket after they have been retrieved. To accomplish the operation the * destinationBucket option must be set. The copy bucket operation is only performed if the Exchange is committed. * If a rollback occurs, the object is not moved. */ public void setMoveAfterRead(boolean moveAfterRead) { this.moveAfterRead = moveAfterRead; } public boolean isBypassGovernanceMode() { return bypassGovernanceMode; } /** * Set this flag if you want to bypassGovernanceMode when deleting a particular object. */ public void setBypassGovernanceMode(boolean bypassGovernanceMode) { this.bypassGovernanceMode = bypassGovernanceMode; } public boolean isIncludeBody() { return includeBody; } /** * If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will * be set with the Minio object metadata, but the body will be null. This option is strongly related to * autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the * caller to close the MinioObject stream. Setting autocloseBody to true, will close the MinioObject stream * automatically. */ public void setIncludeBody(boolean includeBody) { this.includeBody = includeBody; } public boolean isAutoCloseBody() { return autoCloseBody; } /** * If this option is true and includeBody is true, then the MinioObject.close() method will be called on exchange * completion. This option is strongly related to includeBody option. In case of setting includeBody to true and * autocloseBody to false, it will be up to the caller to close the MinioObject stream. Setting autocloseBody to * true, will close the MinioObject stream automatically. */ public void setAutoCloseBody(boolean autoCloseBody) { this.autoCloseBody = autoCloseBody; } public String getKeyName() { return keyName; } /** * Setting the key name for an element in the bucket through endpoint parameter. */ public void setKeyName(String keyName) { this.keyName = keyName; } public boolean isDeleteAfterWrite() { return deleteAfterWrite; } /** * Delete file object after the Minio file has been uploaded. */ public void setDeleteAfterWrite(boolean deleteAfterWrite) { this.deleteAfterWrite = deleteAfterWrite; } public String getStorageClass() { return storageClass; } /** * The storage class to set in the request. */ public void setStorageClass(String storageClass) { this.storageClass = storageClass; } public MinioOperations getOperation() { return operation; } /** * The operation to do in case the user don't want to do only an upload. */ public void setOperation(MinioOperations operation) { this.operation = operation; } public boolean isPojoRequest() { return pojoRequest; } /** * If we want to use a POJO request as body or not. */ public void setPojoRequest(boolean pojoRequest) { this.pojoRequest = pojoRequest; } public MinioConfiguration copy() { try { return (MinioConfiguration) super.clone(); } catch (CloneNotSupportedException e) { throw new RuntimeCamelException(e); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy