in src/main/scala/payment_failure_comms/IdapiConnector.scala [42:66]
private def logResponse(logger: LambdaLogger, response: Response, body: String): Unit =
Log.response(logger)(
service = Log.Service.Idapi,
url = response.request().url().toString,
method = response.request().method(),
responseCode = response.code(),
body = Some(body)
)
def handleRequestResult[T: Decoder](logger: LambdaLogger)(result: Either[Throwable, Response]): Either[Failure, T] = {
result
.left.map(i => IdapiRequestFailure(s"Attempt to contact Braze failed with error: ${i.toString}"))
.flatMap(response => {
val body = response.body().string()
logResponse(logger, response, body)
if (response.isSuccessful) {
decode[T](body)
.left.map(decodeError =>
IdapiResponseFailure(s"Failed to decode successful response:$decodeError. Body to decode $body")
)
} else {
Left(IdapiResponseFailure(s"The request to Braze was unsuccessful: ${response.code} - $body"))
}
})
}