in support-payment-api/src/main/scala/model/paypal/PaypalApiError.scala [21:63]
def fromString(message: String): PaypalApiError = PaypalApiError(None, None, message)
def fromThrowable(exception: Throwable): PaypalApiError = exception match {
case paypalException: PayPalRESTException => {
val responseCode: Option[Int] = for {
code <- Option(paypalException.getResponsecode)
} yield code
// See: https://developer.paypal.com/docs/api/payments/v1/#errors
val errorName: Option[String] = for {
details <- Option(paypalException.getDetails)
name <- Option(details.getName)
if name != ""
} yield name
val error: Option[String] = for {
error <- Option(paypalException.getDetails)
message <- Option(error.getMessage)
if message != ""
} yield message
val issue: Option[String] = for {
error <- Option(paypalException.getDetails)
detailMessages <- Option(error.getDetails)
issueMessages = detailMessages.asScala.toList.map(_.getIssue)
issue = issueMessages.mkString(" - ")
if issue != ""
} yield issue
val errorMessage: String = (error, issue) match {
case (Some(message), Some(issue)) => s"$message - $issue"
case (Some(message), _) => s"$message"
case (_, Some(issue)) => s"$issue"
case (_, _) => "Unknown error message"
}
PaypalApiError(responseCode, errorName, errorMessage)
}
case throwable: Throwable => PaypalApiError(None, None, throwable.getMessage)
}