override fun upload()

in aws-lambda-common/src/main/java/jetbrains/buildServer/runner/lambda/directory/S3WorkingDirectoryTransferImpl.kt [57:83]


    override fun upload(key: String, workingDirectory: File?, properties: Map<String, String>?): String {
        logger.message("Uploading working directory $workingDirectory to S3 bucket")
        if (!checkIfBucketExists()) {
            createBucket()
        }

        logger.message("Starting upload of working directory...")
        val objectMetadata = ObjectMetadata().apply {
            contentType = "plain/text"
            properties?.forEach { (key, value) -> addUserMetadata(key, value) }
        }
        val putObjectRequest = PutObjectRequest(this.name, key, workingDirectory).apply {
            metadata = objectMetadata
        }
        val upload = transferManager.upload(putObjectRequest)
        upload.waitForCompletion()

        val generatePresignedUrlRequest = GeneratePresignedUrlRequest(this.name, key).apply {
            method = HttpMethod.GET
            expiration = generateTimeout()
        }

        val url = s3Client.generatePresignedUrl(generatePresignedUrlRequest)

        logger.message("Upload complete")
        return url.toString()
    }