in membership-common/src/main/scala/com/gu/zuora/soap/models/Errors.scala [106:139]
private def handleZuoraFaults(result: Node) =
ZuoraFault((result \ "faultcode").text, (result \ "faultstring").text)
private def handleZuoraPartialErrors(result: Node) = {
val code = (result \ "Errors" \ "Code").head.text
val message = (result \ "Errors" \ "Message").head.text
val `type` = code match {
case "API_DISABLED" => ApiDisabled
case "CANNOT_DELETE" => CannotDelete
case "CREDIT_CARD_PROCESSING_FAILURE" => CreditCardProcessingFailure
case "DUPLICATE_VALUE" => DuplicateValue
case "INVALID_FIELD" => InvalidField
case "INVALID_ID" => InvalidId
case "INVALID_LOGIN" => InvalidLogin
case "INVALID_SESSION" => InvalidSession
case "INVALID_TYPE" => InvalidType
case "INVALID_VALUE" => InvalidValue
case "INVALID_VERSION" => InvalidVersion
case "LOCK_COMPETITION" => LockCompetition
case "MALFORMED_QUERY" => MalformedQuery
case "MAX_RECORDS_EXCEEDED" => MaxRecordsExceeded
case "MISSING_REQUIRED_VALUE" => MissingRequiredValue
case "REQUEST_EXCEEDED_LIMIT" => RequestExceededLimit
case "REQUEST_EXCEEDED_RATE" => RequestExceededRate
case "SERVER_UNAVAILABLE" => ServerUnavailable
case "TRANSACTION_FAILED" => TransactionFailed
case "TRANSACTION_TERMINATED" => TransactionTerminated
case "TRANSACTION_TIMEOUT" => TransactionTimeout
case "UNKNOWN_ERROR" => UnknownError
}
ZuoraPartialError(code, message, `type`)
}