def handler()

in handlers/stripe-webhook-endpoints/src/main/scala/com/gu/paymentIntentIssues/Lambda.scala [28:56]


  def handler(event: APIGatewayProxyRequestEvent): APIGatewayProxyResponseEvent = {
    val identity = AppIdentity.whoAmI(defaultAppName = "payment-intent-issues", aws.CredentialsProvider).get

    val program = loadConfig(identity).subflatMap(config =>
      for {
        payload <- getPayload(event, config.endpointSecret)
        _ <- processEvent(payload, config)
      } yield (),
    )

    val result = program.value.unsafeRunSync()

    val response = new APIGatewayProxyResponseEvent()
    result match {
      case Left(ConfigLoadingError(message)) =>
        logger.error(message)
        response.setStatusCode(500)
      case Left(error @ (InvalidRequestError(_) | InvalidJsonError(_))) =>
        logger.error(error.message)
        response.setStatusCode(400)
      case Left(error @ (MissingPaymentNumberError(_) | ZuoraApiError(_))) =>
        // TODO: alarm
        logger.error(error.message)
        response.setStatusCode(200)
      case Right(_) =>
        response.setStatusCode(200)
    }
    response
  }