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

com.atlassian.maven.plugins.aws.it.Uploader.kt Maven / Gradle / Ivy

The newest version!
package com.atlassian.maven.plugins.aws.it

import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.AmazonS3ClientBuilder
import org.apache.maven.plugin.logging.Log
import java.io.File
import java.nio.file.Files

class Uploader(
    private val log: Log
) {
    fun upload(
        s3Uploads: List,
        stackInfo: StackInfo
    ) {
        s3Uploads.forEach {
            upload(it, stackInfo)
        }
    }

    private fun upload(
        s3Upload: S3Upload,
        stackInfo: StackInfo
    ) {
        val logicalId = s3Upload.bucketLogicalId
        val bucket = stackInfo.findBucket(logicalId)
        val s3 = AmazonS3ClientBuilder.standard()
            .withRegion(stackInfo.awsRegion)
            .build()
        s3Upload.files.forEach {
            upload(it, s3, bucket.physicalResourceId, it.name)
        }
    }

    private fun upload(
        file: File,
        s3: AmazonS3,
        bucketName: String,
        key: String
    ) {
        if (file.isDirectory) {
            Files.newDirectoryStream(file.toPath()).use {
                it.forEach {
                    upload(it.toFile(), s3, bucketName, "$key/${it.fileName}")
                }
            }
        } else {
            log.info("Uploading $file to $bucketName under $key")
            s3.putObject(bucketName, key, file)
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy