Package com.bzzzapp.aws.gradle.s3

Source Code of com.bzzzapp.aws.gradle.s3.S3Deployer

package com.bzzzapp.aws.gradle.s3;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.AWSCredentialsProviderChain;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.event.ProgressEvent;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.internal.StaticCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
import com.amazonaws.services.s3.transfer.TransferManager;
import org.apache.xerces.xs.datatypes.ObjectList;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class S3Deployer {

    public static final String GRADLE_NAME = "awsS3Deploy";

    private final String awsAccessKeyId;
    private final String awsSecretSharedKey;
    private String bucketName;
    private String pathToUpload;

    private AmazonS3 s3;
    private TransferManager tm;

    public S3Deployer(String awsAccessKeyId,
                      String awsSecretSharedKey,
                      String bucketName,
                      String pathToUpload) {
        this.awsAccessKeyId = awsAccessKeyId;
        this.awsSecretSharedKey = awsSecretSharedKey;
        this.bucketName = bucketName;
        this.pathToUpload = pathToUpload;
    }

    public void perform() {
        initAWS();
        clearFolder();
        upload();
    }

    private void initAWS() {
        AWSCredentialsProvider credentials = new AWSCredentialsProviderChain(
                new StaticCredentialsProvider(new BasicAWSCredentials(
                        awsAccessKeyId,
                        awsSecretSharedKey)));
        ClientConfiguration clientConfig = new ClientConfiguration();

        clientConfig.setUserAgent("AwsGradlePlugin");

        s3 = new AmazonS3Client(credentials);
        tm = new TransferManager(s3);
    }

    private void clearFolder() {
        System.out.println("clear s3 bucket");
        ObjectListing objectListing = s3.listObjects(bucketName);
        if (objectListing.getObjectSummaries().size() > 0) {
            DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest(bucketName);
            List<DeleteObjectsRequest.KeyVersion> keys = new ArrayList<DeleteObjectsRequest.KeyVersion>();
            for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
                keys.add(new DeleteObjectsRequest.KeyVersion(objectSummary.getKey()));
            }
            deleteRequest.setKeys(keys);
            s3.deleteObjects(deleteRequest);
        }
    }

    private void upload() {
        System.out.println("uplaod to s3 bucket");
        File file = new File(pathToUpload);
//        s3.putObject(bucketName, file.getName(), file);
        MultipleFileUpload mfu = tm.uploadDirectory(bucketName, null, file, true);
        try {
            mfu.waitForCompletion();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        tm.shutdownNow();
    }
}
TOP

Related Classes of com.bzzzapp.aws.gradle.s3.S3Deployer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.