1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/**
* Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
*/
namespace Temando\Shipping\Rest\Exception;
use Temando\Shipping\Rest\Response\Document\Errors;
use Temando\Shipping\Rest\Response\DataObject\Error;
/**
* Temando REST Adapter Exception – parsed Http Exception
*
* @package Temando\Shipping\Rest
* @author Christoph Aßmann <christoph.assmann@netresearch.de>
* @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link https://www.temando.com/
*/
class AdapterException extends RestException
{
/**
* @param \Exception $cause
* @return static
*/
public static function create(\Exception $cause)
{
$message = 'API connection failed';
return new static($message, $cause->getCode(), $cause);
}
/**
* @param Errors $errors
* @param \Exception|null $cause
* @return static
*/
public static function errorResponse(Errors $errors, \Exception $cause = null)
{
$messages = array_map(function (Error $error) {
$message = $error->getDetail() ?: $error->getTitle();
return sprintf('%s: %s', $error->getCode(), $message);
}, $errors->getErrors());
$messages = implode(', ', $messages);
if ($cause !== null) {
return new static($messages, $cause->getCode(), $cause);
}
return new static($messages);
}
}