override def handle()

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