PluginProbe
Media Cloud Sync / 1.1.0
Media Cloud Sync v1.1.0
1.4.1 1.4.0 1.3.12 1.3.11 1.3.10 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.2.0 1.2.10 1.2.11 1.2.12 1.2.13 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 All 35 releases
media-cloud-sync / includes / sdk / s3 / Aws / Api / ErrorParser / AbstractErrorParser.php

AbstractErrorParser.php in Media Cloud Sync 1.1.0, at includes/sdk/s3/Aws/Api/ErrorParser/AbstractErrorParser.php

71 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Dudlewebs\WPMCS\s3\Aws\Api\ErrorParser;
4
5 use Dudlewebs\WPMCS\s3\Aws\Api\Parser\MetadataParserTrait;
6 use Dudlewebs\WPMCS\s3\Aws\Api\Parser\PayloadParserTrait;
7 use Dudlewebs\WPMCS\s3\Aws\Api\Service;
8 use Dudlewebs\WPMCS\s3\Aws\Api\StructureShape;
9 use Dudlewebs\WPMCS\s3\Aws\CommandInterface;
10 use Dudlewebs\WPMCS\s3\Psr\Http\Message\ResponseInterface;
11 abstract class AbstractErrorParser
12 {
13 use MetadataParserTrait;
14 use PayloadParserTrait;
15 /**
16 * @var Service
17 */
18 protected $api;
19 /**
20 * @param Service $api
21 */
22 public function __construct(Service $api = null)
23 {
24 $this->api = $api;
25 }
26 protected abstract function payload(ResponseInterface $response, StructureShape $member);
27 protected function extractPayload(StructureShape $member, ResponseInterface $response)
28 {
29 if ($member instanceof StructureShape) {
30 // Structure members parse top-level data into a specific key.
31 return $this->payload($response, $member);
32 } else {
33 // Streaming data is just the stream from the response body.
34 return $response->getBody();
35 }
36 }
37 protected function populateShape(array &$data, ResponseInterface $response, CommandInterface $command = null)
38 {
39 $data['body'] = [];
40 if (!empty($command) && !empty($this->api)) {
41 // If modeled error code is indicated, check for known error shape
42 if (!empty($data['code'])) {
43 $errors = $this->api->getOperation($command->getName())->getErrors();
44 foreach ($errors as $key => $error) {
45 // If error code matches a known error shape, populate the body
46 if ($data['code'] == $error['name'] && $error instanceof StructureShape) {
47 $modeledError = $error;
48 $data['body'] = $this->extractPayload($modeledError, $response);
49 $data['error_shape'] = $modeledError;
50 foreach ($error->getMembers() as $name => $member) {
51 switch ($member['location']) {
52 case 'header':
53 $this->extractHeader($name, $member, $response, $data['body']);
54 break;
55 case 'headers':
56 $this->extractHeaders($name, $member, $response, $data['body']);
57 break;
58 case 'statusCode':
59 $this->extractStatus($name, $response, $data['body']);
60 break;
61 }
62 }
63 break;
64 }
65 }
66 }
67 }
68 return $data;
69 }
70 }
71