Skip to content

Instantly share code, notes, and snippets.

@osvadimos
Last active June 20, 2018 09:51
Show Gist options
  • Save osvadimos/eb93c9c5ea386da8820e73279fad7982 to your computer and use it in GitHub Desktop.
Save osvadimos/eb93c9c5ea386da8820e73279fad7982 to your computer and use it in GitHub Desktop.
package io.ansr.piker.unit
import com.amazonaws.services.s3.AmazonS3Client
import com.amazonaws.services.s3.model.CannedAccessControlList
import com.amazonaws.services.s3.model.ObjectListing
import com.amazonaws.services.s3.model.PutObjectRequest
import com.amazonaws.services.s3.model.PutObjectResult
import com.amazonaws.services.s3.model.S3ObjectSummary
import io.ansr.piker.AppUtils
import org.apache.commons.io.FileUtils
import org.apache.commons.io.IOUtils
import java.nio.file.Files
import java.nio.file.StandardCopyOption
class AmazonS3ClientUnitUtil extends AmazonS3Client{
ObjectListing listObjects(String exportBucket, String campaignPk){
//TODO create file listing for unit tests
ObjectListing listing = new ObjectListing()
listing.setBucketName(exportBucket)
List<S3ObjectSummary> objects = []
File directory = new File(exportBucket)
if(directory.exists()){
directory.eachFileRecurse { File internalFile ->
S3ObjectSummary object = new S3ObjectSummary()
object.setBucketName(exportBucket)
object.setKey(internalFile.toString().substring(internalFile.toString().indexOf('/', 0) + 1))
objects.add(object)
}
}
listing.objectSummaries = objects
return listing
}
PutObjectResult putObject(PutObjectRequest putObjectRequest){
putObjectRequest.setCannedAcl(CannedAccessControlList.Private)
final String filePath = [putObjectRequest.getBucketName(), putObjectRequest.getKey()].join('/')
File s3Object = new File(filePath)
if(putObjectRequest.file?.exists()){
FileUtils.copyFile(putObjectRequest.file, s3Object)
}else if(putObjectRequest.inputStream){
Files.copy(putObjectRequest.inputStream,
s3Object.toPath(),
StandardCopyOption.REPLACE_EXISTING)
IOUtils.closeQuietly(putObjectRequest.inputStream)
}
PutObjectResult result = new PutObjectResult()
result.setMetadata(putObjectRequest.metadata)
result.setVersionId(AppUtils.generatePk(10))
result.setContentMd5(AppUtils.generatePk(10))
return result
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment