override def execute()

in mobile-save-for-later/src/main/scala/com/gu/sfl/lambda/LambdaApiGateway.scala [111:130]


  override def execute(inputStream: InputStream, outputStream: OutputStream): Unit = {
    try {
      val response: Future[ApiGatewayLambdaResponse] = objectReadAndClose(inputStream) match {
        case Left(apiLambdaGatewayRequest) =>
          function(LambdaRequest(apiLambdaGatewayRequest)).map { res =>
            logger.debug(s"ApiGateway  lamda response: ${res}")
            ApiGatewayLambdaResponse(res)
          }
       case Right(_) =>
          logger.debug("Lambda returned error")
          Future.successful(ApiGatewayLambdaResponse(StatusCodes.internalServerError))
      }

      val result = Await.result(response, Duration.Inf)
      mapper.writeValue(outputStream, result)
    }
    finally {
      outputStream.close()
    }
  }