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