SmartlingApiException.php in TMGMT Translator Smartling 8.4
File
vendor/smartling/api-sdk-php/src/Exceptions/SmartlingApiException.php
View source
<?php
namespace Smartling\Exceptions;
use Exception;
class SmartlingApiException extends \Exception {
const ERROR_OUTPUT_SEPARATOR = '---------------------------';
protected $errors = [];
public function __construct($errors, $code = 0, \Exception $previous = null) {
$message = '';
if (is_string($errors)) {
$message = $errors;
}
elseif (is_array($errors)) {
$message = print_r($errors, TRUE);
$this->errors = $errors;
}
parent::__construct($message, $code, $previous);
}
public function getErrors() {
return $this->errors;
}
public function getErrorsByKey($key) {
if (!is_string($key)) {
throw new \Exception('Key must be a string');
}
$errors = array_filter($this->errors, function ($el) use ($key) {
return $el['key'] === $key;
});
return $errors;
}
public function formatErrors($title = '') {
$errorsStr = PHP_EOL;
foreach ($this->errors as $k => $error) {
$details = [];
if (isset($error['details']) && is_array($error['details'])) {
foreach ($error['details'] as $name => $value) {
$details[] = sprintf('%s:%s', $name, $value);
}
}
$body = sprintf('key: %smessage: %sdetails: %s', $error['key'] . PHP_EOL, $error['message'] . PHP_EOL, implode(' | ', $details) . PHP_EOL);
$errorsStr .= $body . self::ERROR_OUTPUT_SEPARATOR . PHP_EOL;
}
$messageTemplate = $title . PHP_EOL . 'Response code: %s' . PHP_EOL . 'Response errors (%s): %s%s' . PHP_EOL;
$output = vsprintf($messageTemplate, [
$this
->getCode(),
count($this->errors),
PHP_EOL . self::ERROR_OUTPUT_SEPARATOR,
$errorsStr,
]);
return $output;
}
}