Viewing file: RestJsonErrorParser.php (1.58 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php namespace Aws\Api\ErrorParser;
use Aws\Api\Parser\JsonParser; use Aws\Api\Service; use Aws\Api\StructureShape; use Aws\CommandInterface; use Psr\Http\Message\ResponseInterface;
/** * Parses JSON-REST errors. */ class RestJsonErrorParser extends AbstractErrorParser { use JsonParserTrait;
private $parser;
public function __construct(Service $api = null, JsonParser $parser = null) { parent::__construct($api); $this->parser = $parser ?: new JsonParser(); }
public function __invoke( ResponseInterface $response, CommandInterface $command = null ) { $data = $this->genericHandler($response);
// Merge in error data from the JSON body if ($json = $data['parsed']) { $data = array_replace($data, $json); }
// Correct error type from services like Amazon Glacier if (!empty($data['type'])) { $data['type'] = strtolower($data['type']); }
// Retrieve the error code from services like Amazon Elastic Transcoder if ($code = $response->getHeaderLine('x-amzn-errortype')) { $colon = strpos($code, ':'); $data['code'] = $colon ? substr($code, 0, $colon) : $code; }
// Retrieve error message directly $data['message'] = isset($data['parsed']['message']) ? $data['parsed']['message'] : (isset($data['parsed']['Message']) ? $data['parsed']['Message'] : null);
$this->populateShape($data, $response, $command);
return $data; } }
|