in formstack-baton-requests/src/main/scala/com/gu/identity/formstackbatonrequests/updatedynamo/UpdateDynamoHandler.scala [74:103]
override def handle(request: UpdateDynamoRequest, context: Context): Either[Throwable, UpdateDynamoResponse] = {
val token = request.accountNumber match {
case Some(account) if account == 1 => config.accountOneToken
case Some(account) => throw new RuntimeException(s"Unexpected account number: $account")
case None => throw new RuntimeException(s"Unable to retrieve account number from UpdateDynamoRequest")
}
val tenSecondsFromNow = getCurrentTimestamp().plusSeconds(10L)
//the timestamp of when the step function was triggered should not be in the future
if (request.timeOfStart.isAfter(tenSecondsFromNow)) {
throw new RuntimeException(s"Invalid timeOfStart: ${request.timeOfStart} is in the future")
}
update(token, request.formPage, request.count, request.timeOfStart, request.maxUpdateSeconds, context) match {
case Right(res) =>
val status = if (res.completed) Completed else Pending
Right(UpdateDynamoResponse(
status,
request.initiationReference,
request.subjectEmail,
request.dataProvider,
res.token.account,
res.formsPage,
res.count,
request.requestType,
request.timeOfStart))
case Left(err) =>
s3Client.writeFailedResults(request.initiationReference, err.getMessage, request.requestType, config)
.flatMap(_ => Left(err))
}
}