def sendEmail()

in payment-failure/src/main/scala/com/gu/identity/paymentfailure/BrazeClient.scala [11:31]


  def sendEmail(request: BrazeSendRequest) : Either[Throwable, BrazeResponse] = {

    logger.info(s"sending email via Braze - request data: $request")

    Either.catchNonFatal(
      Http(s"${config.brazeApiHost}/campaigns/trigger/send")
      .header("content-type", "application/json")
      .postData(request.asJson.toString)
      .asString
    ).flatMap { response =>
      val body = response.body
      if (response.isSuccess) {
        logger.info(s"successfully executed braze request: $request - response body: $body")
        decode[BrazeResponse](body)
      } else {
        val message = s"failed to send email from Braze, error with status ${response.code} - error $body"
        logger.error(message)
        Left(new Exception(message))
      }
    }
  }