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
}