in src/main/scala/com/gu/liveappversions/S3Storage.scala [29:57]
def putJson(jsonToUpload: Json, env: Env, bucketName: String, partialKey: String): Try[PutObjectResult] = {
val key = fullKey(env, partialKey)
val buildAttributesStream: ByteArrayInputStream = new ByteArrayInputStream(jsonToUpload.toString().getBytes)
val metadata = new ObjectMetadata()
metadata.setContentType("application/json")
metadata.setCacheControl("max-age=60")
val accessControl = if (env.stage == "PROD") {
CannedAccessControlList.PublicRead
} else {
CannedAccessControlList.Private //It's preferable to avoid serving test files via https://mobile.guardianapis.com/
}
val putObjectRequest = new PutObjectRequest(bucketName, key, buildAttributesStream, metadata)
.withCannedAcl(accessControl)
Try(s3Client.putObject(putObjectRequest)) match {
case Success(result) =>
logger.info(s"Successfully uploaded new build info to S3 (bucket: $bucketName | key: $key)")
Success(result)
case Failure(exception) =>
logger.error(s"Failed to uploaded build to S3 (bucket: $bucketName | key: $key) due to: $exception")
Failure(exception)
}
}