def putJson()

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)
    }

  }