def snapshot()

in src/main/scala/com/gu/flexible/snapshotter/SnapshottingLambda.scala [38:56]


  def snapshot(requests: Seq[String], config: SnapshotterConfig): Attempt[Seq[(Attempt[PutObjectResult], Attempt[PutObjectResult])]] = {
    implicit val implicitConfig = config
    val snapshotRequestAttempts = requests.map(deserialise[SnapshotRequest])
    for {
      snapshotRequests <- Attempt.successfulAttempts(snapshotRequestAttempts)
      apiResults = snapshotRequests.map(contentForSnapshot)
      successfulApiResults <- Attempt.successfulAttempts(apiResults)
    } yield {
      successfulApiResults.map{ snapshot =>
        val snapshotTime = new DateTime()
        val snapshotKey = makeKey(snapshot.id, snapshotTime, "json")
        val snapshotSummaryKey = makeKey(snapshot.id, snapshotTime, "info.json")
        (
          uploadToS3Bucket(snapshotKey, snapshot.data),
          uploadToS3Bucket(snapshotSummaryKey, snapshot.summaryData)
        )
      }
    }
  }