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

com.volcengine.tos.TOSV2Client Maven / Gradle / Ivy

There is a newer version: 2.8.3
Show newest version
package com.volcengine.tos;

import com.volcengine.tos.auth.Credentials;
import com.volcengine.tos.auth.SignV4;
import com.volcengine.tos.auth.Signer;
import com.volcengine.tos.credential.CredentialsProvider;
import com.volcengine.tos.credential.StaticCredentialsProvider;
import com.volcengine.tos.internal.*;
import com.volcengine.tos.internal.util.ParamsChecker;
import com.volcengine.tos.internal.util.StringUtils;
import com.volcengine.tos.internal.util.TosUtils;
import com.volcengine.tos.model.acl.GetObjectAclOutput;
import com.volcengine.tos.model.acl.PutObjectAclInput;
import com.volcengine.tos.model.acl.PutObjectAclOutput;
import com.volcengine.tos.model.bucket.*;
import com.volcengine.tos.model.object.*;
import com.volcengine.tos.transport.TransportConfig;

import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.time.Duration;
import java.util.Map;

import static com.volcengine.tos.internal.Consts.DEFAULT_USER_AGENT_ITEM;

public class TOSV2Client implements TOSV2 {
    private TOSClientConfiguration config;
    private TosBucketRequestHandler bucketRequestHandler;
    private TosObjectRequestHandler objectRequestHandler;
    private TosFileRequestHandler fileRequestHandler;
    private TosPreSignedRequestHandler preSignedRequestHandler;
    private TosClientV1Adapter clientV1Adapter;

    private Transport transport;
    private Signer signer;
    private TosRequestFactory factory;

    protected TOSV2Client(TOSClientConfiguration conf) {
        validateAndInitConfig(conf);
        initRequestHandler();
        initV1ClientAdapter();
    }

    private void validateAndInitConfig(TOSClientConfiguration conf) {
        ParamsChecker.ensureNotNull(conf, "TOSClientConfiguration");
        ParamsChecker.ensureNotNull(conf.getRegion(), "region");
        this.config = conf;
        this.config.setEndpoint(validateEndpoint(this.config.getEndpoint(), this.config.getRegion()));
    }

    private String validateEndpoint(String endpoint, String region) {
        if (StringUtils.isEmpty(endpoint)) {
            if (TosUtils.getSupportedRegion().containsKey(region)) {
                return TosUtils.getSupportedRegion().get(region).get(0);
            }
            throw new TosClientException("endpoint is null and region is invalid", null);
        }
        return endpoint;
    }

    private void initRequestHandler() {
        if (this.factory == null) {
            if (this.transport == null) {
                setIsHttpByEndpoint(this.config.getEndpoint());
                this.transport = new RequestTransport(this.config.getTransportConfig()).setDisableEncodingMeta(this.config.isDisableEncodingMeta());
            }
            // 允许 signer 为空,匿名访问
            if (this.signer == null) {
                if (this.config.getCredentialsProvider() != null) {
                    this.signer = new SignV4(this.config.getCredentialsProvider(), this.config.getRegion());
                } else if (this.config.getCredentials() != null) {
                    this.signer = new SignV4(this.config.getCredentials(), this.config.getRegion());
                }
            }
            this.factory = new TosRequestFactory(this.signer, this.config.getEndpoint())
                    .setIsCustomDomain(config.isCustomDomain())
                    .setDisableEncodingMeta(this.config.isDisableEncodingMeta()).setUserAgent(this.buildUserAgent());
        }
        this.bucketRequestHandler = new TosBucketRequestHandler(this.transport, this.factory);
        this.objectRequestHandler = new TosObjectRequestHandler(this.transport, this.factory, this.bucketRequestHandler)
                .setClientAutoRecognizeContentType(this.config.isClientAutoRecognizeContentType())
                .setEnableCrcCheck(this.config.isEnableCrc())
                .setUseTrailerHeader(!this.config.isDisableTrailerHeader())
                .setDisableEncodingMeta(this.config.isDisableEncodingMeta());
        this.fileRequestHandler = new TosFileRequestHandler(objectRequestHandler, this.transport, this.factory)
                .setEnableCrcCheck(this.config.isEnableCrc());
        this.preSignedRequestHandler = new TosPreSignedRequestHandler(this.factory, this.signer);
    }

    private String buildUserAgent() {
        if (StringUtils.isEmpty(this.config.getUserAgentProductName()) && StringUtils.isEmpty(this.config.getUserAgentSoftName())
                && StringUtils.isEmpty(this.config.getUserAgentSoftVersion()) && (this.config.getUserAgentCustomizedKeyValues() == null || this.config.getUserAgentCustomizedKeyValues().isEmpty())) {
            return TosUtils.getUserAgent();
        }
        StringBuilder sb = new StringBuilder();
        sb.append(TosUtils.getUserAgent());
        sb.append(" -- ");
        if (StringUtils.isEmpty(this.config.getUserAgentProductName())) {
            sb.append(DEFAULT_USER_AGENT_ITEM);
        } else {
            sb.append(this.config.getUserAgentProductName());
        }
        sb.append("/");
        if (StringUtils.isEmpty(this.config.getUserAgentSoftName())) {
            sb.append(DEFAULT_USER_AGENT_ITEM);
        } else {
            sb.append(this.config.getUserAgentSoftName());
        }
        sb.append("/");
        if (StringUtils.isEmpty(this.config.getUserAgentSoftVersion())) {
            sb.append(DEFAULT_USER_AGENT_ITEM);
        } else {
            sb.append(this.config.getUserAgentSoftVersion());
        }
        if (this.config.getUserAgentCustomizedKeyValues() != null && !this.config.getUserAgentCustomizedKeyValues().isEmpty()) {
            sb.append(" (");
            int index = 0;
            for (Map.Entry e : this.config.getUserAgentCustomizedKeyValues().entrySet()) {
                if (e.getKey() == null || e.getValue() == null) {
                    continue;
                }
                sb.append(e.getKey());
                sb.append("/");
                sb.append(e.getValue());
                if (index != this.config.getUserAgentCustomizedKeyValues().size() - 1) {
                    sb.append(";");
                }
                index++;
            }
            sb.append(")");
        }
        return sb.toString();
    }

    private void setIsHttpByEndpoint(String endpoint) {
        if (this.config == null || this.config.getTransportConfig() == null || StringUtils.isEmpty(endpoint)) {
            return;
        }
        boolean isHttp = endpoint.startsWith(Consts.SCHEME_HTTP);
        config.getTransportConfig().setHttp(isHttp);
    }

    private void initV1ClientAdapter() {
        this.clientV1Adapter = new TosClientV1Adapter(bucketRequestHandler, objectRequestHandler,
                fileRequestHandler, preSignedRequestHandler);
    }

    @Override
    @Deprecated
    public void changeCredentials(Credentials credentials) {
        this.config.setCredentials(credentials);
        if (credentials == null) {
            // 匿名访问
            this.signer = null;
        } else {
            this.signer = new SignV4(credentials, this.config.getRegion());
        }
        this.factory.setSigner(this.signer);
        cascadeUpdateRequestFactory();
    }

    @Override
    public boolean refreshCredentials(String accessKey, String secretKey, String securityToken) {
        if (this.config.getCredentialsProvider() != null && !(this.config.getCredentialsProvider() instanceof StaticCredentialsProvider)) {
            return false;
        }

        CredentialsProvider cred = null;
        if (StringUtils.isNotEmpty(accessKey) && StringUtils.isNotEmpty(secretKey)) {
            cred = new StaticCredentialsProvider(accessKey, secretKey, securityToken);
        }
        this.config.setCredentials(null);
        this.config.setCredentialsProvider(cred);
        if (cred == null) {
            this.signer = null;
        } else {
            this.signer = new SignV4(cred, this.config.getRegion());
        }
        return true;
    }

    private void cascadeUpdateRequestFactory() {
        this.bucketRequestHandler.setFactory(this.factory);
        this.objectRequestHandler.setFactory(this.factory);
        this.fileRequestHandler.setObjectHandler(this.objectRequestHandler);
        this.fileRequestHandler.setFactory(this.factory);
        this.preSignedRequestHandler.setSigner(this.signer);
        this.preSignedRequestHandler.setFactory(this.factory);
    }

    private void cascadeUpdateTransport() {
        this.bucketRequestHandler.setTransport(this.transport);
        this.objectRequestHandler.setTransport(this.transport);
        this.fileRequestHandler.setObjectHandler(this.objectRequestHandler);
        this.fileRequestHandler.setTransport(this.transport);
    }

    protected TOSClientConfiguration getConfig() {
        return config;
    }

    protected TosRequestFactory getFactory() {
        return factory;
    }

    @Override
    public void changeRegionAndEndpoint(String region, String endpoint) {
        endpoint = validateEndpoint(endpoint, region);
        this.config.setRegion(region);
        this.config.setEndpoint(endpoint);
        this.factory.setEndpoint(endpoint);
        cascadeUpdateRequestFactory();
    }

    @Override
    public boolean refreshEndpointRegion(String endpoint, String region) {
        try {
            endpoint = validateEndpoint(endpoint, region);
        } catch (Exception ex) {
            return false;
        }
        this.config.setRegion(region);
        this.config.setEndpoint(endpoint);
        this.factory.setEndpoint(endpoint);
        cascadeUpdateRequestFactory();
        return true;
    }

    @Override
    public void changeTransportConfig(TransportConfig config) {
        this.config.setTransportConfig(config);
        this.transport.switchConfig(this.config.getTransportConfig());
        cascadeUpdateTransport();
    }

    @Override
    public CreateBucketV2Output createBucket(String bucket) throws TosException {
        return createBucket(CreateBucketV2Input.builder().bucket(bucket).build());
    }

    @Override
    public CreateBucketV2Output createBucket(CreateBucketV2Input input) throws TosException {
        return bucketRequestHandler.createBucket(input);
    }

    @Override
    public HeadBucketV2Output headBucket(HeadBucketV2Input input) throws TosException {
        return bucketRequestHandler.headBucket(input);
    }

    @Override
    public DeleteBucketOutput deleteBucket(String bucket) throws TosException {
        return deleteBucket(DeleteBucketInput.builder().bucket(bucket).build());
    }

    @Override
    public DeleteBucketOutput deleteBucket(DeleteBucketInput input) throws TosException {
        return bucketRequestHandler.deleteBucket(input);
    }

    @Override
    public ListBucketsV2Output listBuckets(ListBucketsV2Input input) throws TosException {
        return bucketRequestHandler.listBuckets(input);
    }

    @Override
    public PutBucketPolicyOutput putBucketPolicy(String bucket, String policy) throws TosException {
        return putBucketPolicy(PutBucketPolicyInput.builder().bucket(bucket).policy(policy).build());
    }

    @Override
    public PutBucketPolicyOutput putBucketPolicy(PutBucketPolicyInput input) throws TosException {
        return bucketRequestHandler.putBucketPolicy(input);
    }

    @Override
    public GetBucketPolicyOutput getBucketPolicy(String bucket) throws TosException {
        return getBucketPolicy(GetBucketPolicyInput.builder().bucket(bucket).build());
    }

    @Override
    public GetBucketPolicyOutput getBucketPolicy(GetBucketPolicyInput input) throws TosException {
        return bucketRequestHandler.getBucketPolicy(input);
    }

    @Override
    public DeleteBucketPolicyOutput deleteBucketPolicy(String bucket) throws TosException {
        return deleteBucketPolicy(DeleteBucketPolicyInput.builder().bucket(bucket).build());
    }

    @Override
    public DeleteBucketPolicyOutput deleteBucketPolicy(DeleteBucketPolicyInput input) throws TosException {
        return bucketRequestHandler.deleteBucketPolicy(input);
    }

    @Override
    public PutBucketCORSOutput putBucketCORS(PutBucketCORSInput input) throws TosException {
        return bucketRequestHandler.putBucketCORS(input);
    }

    @Override
    public GetBucketCORSOutput getBucketCORS(GetBucketCORSInput input) throws TosException {
        return bucketRequestHandler.getBucketCORS(input);
    }

    @Override
    public DeleteBucketCORSOutput deleteBucketCORS(DeleteBucketCORSInput input) throws TosException {
        return bucketRequestHandler.deleteBucketCORS(input);
    }

    @Override
    public PutBucketStorageClassOutput putBucketStorageClass(PutBucketStorageClassInput input) throws TosException {
        return bucketRequestHandler.putBucketStorageClass(input);
    }

    @Override
    public GetBucketLocationOutput getBucketLocation(GetBucketLocationInput input) throws TosException {
        return bucketRequestHandler.getBucketLocation(input);
    }

    @Override
    public PutBucketLifecycleOutput putBucketLifecycle(PutBucketLifecycleInput input) throws TosException {
        return bucketRequestHandler.putBucketLifecycle(input);
    }

    @Override
    public GetBucketLifecycleOutput getBucketLifecycle(GetBucketLifecycleInput input) throws TosException {
        return bucketRequestHandler.getBucketLifecycle(input);
    }

    @Override
    public DeleteBucketLifecycleOutput deleteBucketLifecycle(DeleteBucketLifecycleInput input) throws TosException {
        return bucketRequestHandler.deleteBucketLifecycle(input);
    }

    @Override
    public PutBucketMirrorBackOutput putBucketMirrorBack(PutBucketMirrorBackInput input) throws TosException {
        return bucketRequestHandler.putBucketMirrorBack(input);
    }

    @Override
    public GetBucketMirrorBackOutput getBucketMirrorBack(GetBucketMirrorBackInput input) throws TosException {
        return bucketRequestHandler.getBucketMirrorBack(input);
    }

    @Override
    public DeleteBucketMirrorBackOutput deleteBucketMirrorBack(DeleteBucketMirrorBackInput input) throws TosException {
        return bucketRequestHandler.deleteBucketMirrorBack(input);
    }

    @Override
    public PutBucketReplicationOutput putBucketReplication(PutBucketReplicationInput input) throws TosException {
        return bucketRequestHandler.putBucketReplication(input);
    }

    @Override
    public GetBucketReplicationOutput getBucketReplication(GetBucketReplicationInput input) throws TosException {
        return bucketRequestHandler.getBucketReplication(input);
    }

    @Override
    public DeleteBucketReplicationOutput deleteBucketReplication(DeleteBucketReplicationInput input) throws TosException {
        return bucketRequestHandler.deleteBucketReplication(input);
    }

    @Override
    public PutBucketVersioningOutput putBucketVersioning(PutBucketVersioningInput input) throws TosException {
        return bucketRequestHandler.putBucketVersioning(input);
    }

    @Override
    public GetBucketVersioningOutput getBucketVersioning(GetBucketVersioningInput input) throws TosException {
        return bucketRequestHandler.getBucketVersioning(input);
    }

    @Override
    public PutBucketWebsiteOutput putBucketWebsite(PutBucketWebsiteInput input) throws TosException {
        return bucketRequestHandler.putBucketWebsite(input);
    }

    @Override
    public GetBucketWebsiteOutput getBucketWebsite(GetBucketWebsiteInput input) throws TosException {
        return bucketRequestHandler.getBucketWebsite(input);
    }

    @Override
    public DeleteBucketWebsiteOutput deleteBucketWebsite(DeleteBucketWebsiteInput input) throws TosException {
        return bucketRequestHandler.deleteBucketWebsite(input);
    }

    @Override
    public PutBucketNotificationOutput putBucketNotification(PutBucketNotificationInput input) throws TosException {
        return bucketRequestHandler.putBucketNotification(input);
    }

    @Override
    public GetBucketNotificationOutput getBucketNotification(GetBucketNotificationInput input) throws TosException {
        return bucketRequestHandler.getBucketNotification(input);
    }

    @Override
    public PutBucketNotificationType2Output putBucketNotificationType2(PutBucketNotificationType2Input input) throws TosException {
        return bucketRequestHandler.putBucketNotificationType2(input);
    }

    @Override
    public GetBucketNotificationType2Output getBucketNotificationType2(GetBucketNotificationType2Input input) throws TosException {
        return bucketRequestHandler.getBucketNotificationType2(input);
    }

    @Override
    public PutBucketCustomDomainOutput putBucketCustomDomain(PutBucketCustomDomainInput input) throws TosException {
        return bucketRequestHandler.putBucketCustomDomain(input);
    }

    @Override
    public ListBucketCustomDomainOutput listBucketCustomDomain(ListBucketCustomDomainInput input) throws TosException {
        return bucketRequestHandler.listBucketCustomDomain(input);
    }

    @Override
    public DeleteBucketCustomDomainOutput deleteBucketCustomDomain(DeleteBucketCustomDomainInput input) throws TosException {
        return bucketRequestHandler.deleteBucketCustomDomain(input);
    }

    @Override
    public PutBucketRealTimeLogOutput putBucketRealTimeLog(PutBucketRealTimeLogInput input) throws TosException {
        return bucketRequestHandler.putBucketRealTimeLog(input);
    }

    @Override
    public GetBucketRealTimeLogOutput getBucketRealTimeLog(GetBucketRealTimeLogInput input) throws TosException {
        return bucketRequestHandler.getBucketRealTimeLog(input);
    }

    @Override
    public DeleteBucketRealTimeLogOutput deleteBucketRealTimeLog(DeleteBucketRealTimeLogInput input) throws TosException {
        return bucketRequestHandler.deleteBucketRealTimeLog(input);
    }

    @Override
    public PutBucketACLOutput putBucketACL(PutBucketACLInput input) throws TosException {
        return bucketRequestHandler.putBucketACL(input);
    }

    @Override
    public GetBucketACLOutput getBucketACL(GetBucketACLInput input) throws TosException {
        return bucketRequestHandler.getBucketACL(input);
    }

    @Override
    public PutBucketRenameOutput putBucketRename(PutBucketRenameInput input) throws TosException {
        return bucketRequestHandler.putBucketRename(input);
    }

    @Override
    public GetBucketRenameOutput getBucketRename(GetBucketRenameInput input) throws TosException {
        return bucketRequestHandler.getBucketRename(input);
    }

    @Override
    public DeleteBucketRenameOutput deleteBucketRename(DeleteBucketRenameInput input) throws TosException {
        return bucketRequestHandler.deleteBucketRename(input);
    }

    @Override
    public PutBucketEncryptionOutput putBucketEncryption(PutBucketEncryptionInput input) throws TosException {
        return bucketRequestHandler.putBucketEncryption(input);
    }

    @Override
    public GetBucketEncryptionOutput getBucketEncryption(GetBucketEncryptionInput input) throws TosException {
        return bucketRequestHandler.getBucketEncryption(input);
    }

    @Override
    public DeleteBucketEncryptionOutput deleteBucketEncryption(DeleteBucketEncryptionInput input) throws TosException {
        return bucketRequestHandler.deleteBucketEncryption(input);
    }

    @Override
    public PutBucketTaggingOutput putBucketTagging(PutBucketTaggingInput input) throws TosException {
        return bucketRequestHandler.putBucketTagging(input);
    }

    @Override
    public GetBucketTaggingOutput getBucketTagging(GetBucketTaggingInput input) throws TosException {
        return bucketRequestHandler.getBucketTagging(input);
    }

    @Override
    public DeleteBucketTaggingOutput deleteBucketTagging(DeleteBucketTaggingInput input) throws TosException {
        return bucketRequestHandler.deleteBucketTagging(input);
    }

    @Override
    public PutBucketInventoryOutput putBucketInventory(PutBucketInventoryInput input) throws TosException {
        return bucketRequestHandler.putBucketInventory(input);
    }

    @Override
    public GetBucketInventoryOutput getBucketInventory(GetBucketInventoryInput input) throws TosException {
        return bucketRequestHandler.getBucketInventory(input);
    }

    @Override
    public ListBucketInventoryOutput listBucketInventory(ListBucketInventoryInput input) throws TosException {
        return bucketRequestHandler.listBucketInventory(input);
    }

    @Override
    public DeleteBucketInventoryOutput deleteBucketInventory(DeleteBucketInventoryInput input) throws TosException {
        return bucketRequestHandler.deleteBucketInventory(input);
    }

    @Override
    public GetObjectV2Output getObject(GetObjectV2Input input) throws TosException {
        return objectRequestHandler.getObject(input);
    }

    @Override
    public GetObjectToFileOutput getObjectToFile(GetObjectToFileInput input) throws TosException {
        return fileRequestHandler.getObjectToFile(input);
    }

    public GetFileStatusOutput getFileStatus(GetFileStatusInput input) throws TosException {
        return objectRequestHandler.getFileStatus(input);
    }

    @Override
    public UploadFileV2Output uploadFile(UploadFileV2Input input) throws TosException {
        return fileRequestHandler.uploadFile(input);
    }

    @Override
    public DownloadFileOutput downloadFile(DownloadFileInput input) throws TosException {
        return fileRequestHandler.downloadFile(input);
    }

    @Override
    public ResumableCopyObjectOutput resumableCopyObject(ResumableCopyObjectInput input) throws TosException {
        return fileRequestHandler.resumableCopyObject(input);
    }

    @Override
    public HeadObjectV2Output headObject(HeadObjectV2Input input) throws TosException {
        return objectRequestHandler.headObject(input);
    }

    @Override
    public DeleteObjectOutput deleteObject(DeleteObjectInput input) throws TosException {
        return objectRequestHandler.deleteObject(input);
    }

    @Override
    public DeleteMultiObjectsV2Output deleteMultiObjects(DeleteMultiObjectsV2Input input) throws TosException {
        return objectRequestHandler.deleteMultiObjects(input);
    }

    @Override
    public PutObjectOutput putObject(PutObjectInput input) throws TosException {
        return objectRequestHandler.putObject(input);
    }

    @Override
    public PutObjectFromFileOutput putObjectFromFile(PutObjectFromFileInput input) throws TosException {
        return fileRequestHandler.putObjectFromFile(input);
    }

    @Override
    public AppendObjectOutput appendObject(AppendObjectInput input) throws TosException {
        return objectRequestHandler.appendObject(input);
    }

    @Override
    public SetObjectMetaOutput setObjectMeta(SetObjectMetaInput input) throws TosException {
        return objectRequestHandler.setObjectMeta(input);
    }

    @Override
    public ListObjectsV2Output listObjects(ListObjectsV2Input input) throws TosException {
        return objectRequestHandler.listObjects(input);
    }

    @Override
    public ListObjectsType2Output listObjectsType2(ListObjectsType2Input input) throws TosException {
        ParamsChecker.ensureNotNull(input, "ListObjectsType2Input");
        if (input.isListOnlyOnce()) {
            return objectRequestHandler.listObjectsType2(input);
        }
        return objectRequestHandler.listObjectsType2UntilFinished(input);
    }

    @Override
    public ListObjectVersionsV2Output listObjectVersions(ListObjectVersionsV2Input input) throws TosException {
        return objectRequestHandler.listObjectVersions(input);
    }

    @Override
    public CopyObjectV2Output copyObject(CopyObjectV2Input input) throws TosException {
        return objectRequestHandler.copyObject(input);
    }

    @Override
    public UploadPartCopyV2Output uploadPartCopy(UploadPartCopyV2Input input) throws TosException {
        return objectRequestHandler.uploadPartCopy(input);
    }

    @Override
    public PutObjectACLOutput putObjectAcl(PutObjectACLInput input) throws TosException {
        return objectRequestHandler.putObjectAcl(input);
    }

    @Override
    public GetObjectACLV2Output getObjectAcl(GetObjectACLV2Input input) throws TosException {
        return objectRequestHandler.getObjectAcl(input);
    }

    @Override
    public PutObjectTaggingOutput putObjectTagging(PutObjectTaggingInput input) throws TosException {
        return objectRequestHandler.putObjectTagging(input);
    }

    @Override
    public GetObjectTaggingOutput getObjectTagging(GetObjectTaggingInput input) throws TosException {
        return objectRequestHandler.getObjectTagging(input);
    }

    @Override
    public DeleteObjectTaggingOutput deleteObjectTagging(DeleteObjectTaggingInput input) throws TosException {
        return objectRequestHandler.deleteObjectTagging(input);
    }

    @Override
    public FetchObjectOutput fetchObject(FetchObjectInput input) throws TosException {
        return objectRequestHandler.fetchObject(input);
    }

    @Override
    public PutFetchTaskOutput putFetchTask(PutFetchTaskInput input) throws TosException {
        return objectRequestHandler.putFetchTask(input);
    }

    @Override
    public GetFetchTaskOutput getFetchTask(GetFetchTaskInput input) throws TosException {
        return objectRequestHandler.getFetchTask(input);
    }

    @Override
    public CreateMultipartUploadOutput createMultipartUpload(CreateMultipartUploadInput input) throws TosException {
        return objectRequestHandler.createMultipartUpload(input);
    }

    @Override
    public UploadPartV2Output uploadPart(UploadPartV2Input input) throws TosException {
        return objectRequestHandler.uploadPart(input);
    }

    @Override
    public UploadPartFromFileOutput uploadPartFromFile(UploadPartFromFileInput input) throws TosException {
        return fileRequestHandler.uploadPartFromFile(input);
    }

    @Override
    public CompleteMultipartUploadV2Output completeMultipartUpload(CompleteMultipartUploadV2Input input) throws TosException {
        return objectRequestHandler.completeMultipartUpload(input);
    }

    @Override
    public AbortMultipartUploadOutput abortMultipartUpload(AbortMultipartUploadInput input) throws TosException {
        return objectRequestHandler.abortMultipartUpload(input);
    }

    @Override
    public ListPartsOutput listParts(ListPartsInput input) throws TosException {
        return objectRequestHandler.listParts(input);
    }

    @Override
    public ListMultipartUploadsV2Output listMultipartUploads(ListMultipartUploadsV2Input input) throws TosException {
        return objectRequestHandler.listMultipartUploads(input);
    }

    @Override
    public RenameObjectOutput renameObject(RenameObjectInput input) throws TosException {
        return objectRequestHandler.renameObject(input);
    }

    @Override
    public RestoreObjectOutput restoreObject(RestoreObjectInput input) throws TosException {
        return objectRequestHandler.restoreObject(input);
    }

    @Override
    public PutSymlinkOutput putSymlink(PutSymlinkInput input) throws TosException {
        return objectRequestHandler.putSymlink(input);
    }

    @Override
    public GetSymlinkOutput getSymlink(GetSymlinkInput input) throws TosException {
        return objectRequestHandler.getSymlink(input);
    }

    protected ModifyObjectOutput modifyObject(ModifyObjectInput input) throws TosException {
        return objectRequestHandler.modifyObject(input, "0", false);
    }

    @Override
    public PreSignedURLOutput preSignedURL(PreSignedURLInput input) throws TosException {
        return preSignedRequestHandler.preSignedURL(input);
    }

    @Override
    public PreSignedPostSignatureOutput preSignedPostSignature(PreSignedPostSignatureInput input) throws TosException {
        return preSignedRequestHandler.preSignedPostSignature(input);
    }

    @Deprecated
    @Override
    public PreSingedPolicyURLOutput preSingedPolicyURL(PreSingedPolicyURLInput input) throws TosException {
        ParamsChecker.ensureNotNull(input, "PreSingedPolicyURLInput");
        PreSignedPolicyURLOutput out = preSignedRequestHandler.preSignedPolicyURL(new PreSignedPolicyURLInput()
                .setBucket(input.getBucket()).setExpires(input.getExpires()).setConditions(input.getConditions())
                .setAlternativeEndpoint(input.getAlternativeEndpoint()).setCustomDomain(input.isCustomDomain()));
        return new PreSingedPolicyURLOutput().setPreSignedPolicyURLGenerator(out.getPreSignedPolicyURLGenerator())
                .setSignatureQuery(out.getSignatureQuery()).setHost(out.getHost()).setScheme(out.getScheme());
    }

    @Override
    public PreSignedPolicyURLOutput preSignedPolicyURL(PreSignedPolicyURLInput input) throws TosException {
        return preSignedRequestHandler.preSignedPolicyURL(input);
    }

    @Override
    public CreateBucketOutput createBucket(CreateBucketInput input) throws TosException {
        return clientV1Adapter.createBucket(input);
    }

    @Override
    public HeadBucketOutput headBucket(String bucket) throws TosException {
        return clientV1Adapter.headBucket(bucket);
    }

    @Override
    public ListBucketsOutput listBuckets(ListBucketsInput input) throws TosException {
        return clientV1Adapter.listBuckets(input);
    }

    @Override
    public GetObjectOutput getObject(String bucket, String objectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.getObject(bucket, objectKey, builders);
    }

    @Override
    public HeadObjectOutput headObject(String bucket, String objectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.headObject(bucket, objectKey, builders);
    }

    @Override
    public DeleteObjectOutput deleteObject(String bucket, String objectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.deleteObject(bucket, objectKey, builders);
    }

    @Override
    public DeleteMultiObjectsOutput deleteMultiObjects(String bucket, DeleteMultiObjectsInput input, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.deleteMultiObjects(bucket, input, builders);
    }

    @Override
    public PutObjectOutput putObject(String bucket, String objectKey, InputStream inputStream, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.putObject(bucket, objectKey, inputStream, builders);
    }

    @Override
    public UploadFileOutput uploadFile(String bucket, UploadFileInput input, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.uploadFile(bucket, input, builders);
    }

    @Override
    public AppendObjectOutput appendObject(String bucket, String objectKey, InputStream content, long offset, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.appendObject(bucket, objectKey, content, offset, builders);
    }

    @Override
    public SetObjectMetaOutput setObjectMeta(String bucket, String objectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.setObjectMeta(bucket, objectKey, builders);
    }

    @Override
    public ListObjectsOutput listObjects(String bucket, ListObjectsInput input) throws TosException {
        return clientV1Adapter.listObjects(bucket, input);
    }

    @Override
    public ListObjectVersionsOutput listObjectVersions(String bucket, ListObjectVersionsInput input) throws TosException {
        return clientV1Adapter.listObjectVersions(bucket, input);
    }

    @Override
    public CopyObjectOutput copyObject(String bucket, String srcObjectKey, String dstObjectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.copyObject(bucket, srcObjectKey, dstObjectKey, builders);
    }

    @Override
    public CopyObjectOutput copyObjectTo(String bucket, String dstBucket, String dstObjectKey, String srcObjectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.copyObjectTo(bucket, dstBucket, dstObjectKey, srcObjectKey, builders);
    }

    @Override
    public CopyObjectOutput copyObjectFrom(String bucket, String srcBucket, String srcObjectKey, String dstObjectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.copyObjectFrom(bucket, srcBucket, srcObjectKey, dstObjectKey, builders);
    }

    @Override
    public UploadPartCopyOutput uploadPartCopy(String bucket, UploadPartCopyInput input, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.uploadPartCopy(bucket, input, builders);
    }

    @Override
    public PutObjectAclOutput putObjectAcl(String bucket, PutObjectAclInput input) throws TosException {
        return clientV1Adapter.putObjectAcl(bucket, input);
    }

    @Override
    public GetObjectAclOutput getObjectAcl(String bucket, String objectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.getObjectAcl(bucket, objectKey, builders);
    }

    @Override
    public CreateMultipartUploadOutput createMultipartUpload(String bucket, String objectKey, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.createMultipartUpload(bucket, objectKey, builders);
    }

    @Override
    public UploadPartOutput uploadPart(String bucket, UploadPartInput input, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.uploadPart(bucket, input, builders);
    }

    @Override
    public CompleteMultipartUploadOutput completeMultipartUpload(String bucket, CompleteMultipartUploadInput input) throws TosException {
        return clientV1Adapter.completeMultipartUpload(bucket, input);
    }

    @Override
    public AbortMultipartUploadOutput abortMultipartUpload(String bucket, AbortMultipartUploadInput input) throws TosException {
        return clientV1Adapter.abortMultipartUpload(bucket, input);
    }

    @Override
    public ListUploadedPartsOutput listUploadedParts(String bucket, ListUploadedPartsInput input, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.listUploadedParts(bucket, input, builders);
    }

    @Override
    public ListMultipartUploadsOutput listMultipartUploads(String bucket, ListMultipartUploadsInput input) throws TosException {
        return clientV1Adapter.listMultipartUploads(bucket, input);
    }

    @Override
    public String preSignedURL(String httpMethod, String bucket, String objectKey, Duration ttl, RequestOptionsBuilder... builders) throws TosException {
        return clientV1Adapter.preSignedURL(httpMethod, bucket, objectKey, ttl, builders);
    }

    @Override
    public void close() throws IOException {
        if (this.transport != null && this.transport instanceof Closeable) {
            try {
                ((Closeable) this.transport).close();
            } catch (IOException ex) {

            }
        }
        if (this.config != null && this.config.getCredentialsProvider() != null && (this.config.getCredentialsProvider() instanceof Closeable)) {
            try {
                ((Closeable) this.config.getCredentialsProvider()).close();
            } catch (IOException ex) {

            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy