PluginProbe ʕ •ᴥ•ʔ
Transferito: WP Migration / trunk
Transferito: WP Migration vtrunk
trunk 11.4.0 12.0.0 13.1.0 14.0.0 14.0.11 14.0.7 14.1.0 14.1.1 14.1.2 14.1.3 14.1.4
transferito / vendor / aws / aws-sdk-php / src / Api / ErrorParser / AbstractErrorParser.php
transferito / vendor / aws / aws-sdk-php / src / Api / ErrorParser Last commit date
AbstractErrorParser.php 11 months ago JsonParserTrait.php 11 months ago JsonRpcErrorParser.php 11 months ago RestJsonErrorParser.php 11 months ago XmlErrorParser.php 11 months ago
AbstractErrorParser.php
95 lines
1 <?php
2 namespace Aws\Api\ErrorParser;
3
4 use Aws\Api\Parser\MetadataParserTrait;
5 use Aws\Api\Parser\PayloadParserTrait;
6 use Aws\Api\Service;
7 use Aws\Api\StructureShape;
8 use Aws\CommandInterface;
9 use Psr\Http\Message\ResponseInterface;
10
11 abstract class AbstractErrorParser
12 {
13 use MetadataParserTrait;
14 use PayloadParserTrait;
15
16 /**
17 * @var Service
18 */
19 protected $api;
20
21 /**
22 * @param Service $api
23 */
24 public function __construct(Service $api = null)
25 {
26 $this->api = $api;
27 }
28
29 abstract protected function payload(
30 ResponseInterface $response,
31 StructureShape $member
32 );
33
34 protected function extractPayload(
35 StructureShape $member,
36 ResponseInterface $response
37 ) {
38 if ($member instanceof StructureShape) {
39 // Structure members parse top-level data into a specific key.
40 return $this->payload($response, $member);
41 } else {
42 // Streaming data is just the stream from the response body.
43 return $response->getBody();
44 }
45 }
46
47 protected function populateShape(
48 array &$data,
49 ResponseInterface $response,
50 CommandInterface $command = null
51 ) {
52 $data['body'] = [];
53
54 if (!empty($command) && !empty($this->api)) {
55
56 // If modeled error code is indicated, check for known error shape
57 if (!empty($data['code'])) {
58
59 $errors = $this->api->getOperation($command->getName())->getErrors();
60 foreach ($errors as $key => $error) {
61
62 // If error code matches a known error shape, populate the body
63 if ($data['code'] == $error['name']
64 && $error instanceof StructureShape
65 ) {
66 $modeledError = $error;
67 $data['body'] = $this->extractPayload(
68 $modeledError,
69 $response
70 );
71 $data['error_shape'] = $modeledError;
72
73 foreach ($error->getMembers() as $name => $member) {
74 switch ($member['location']) {
75 case 'header':
76 $this->extractHeader($name, $member, $response, $data['body']);
77 break;
78 case 'headers':
79 $this->extractHeaders($name, $member, $response, $data['body']);
80 break;
81 case 'statusCode':
82 $this->extractStatus($name, $response, $data['body']);
83 break;
84 }
85 }
86
87 break;
88 }
89 }
90 }
91 }
92
93 return $data;
94 }
95 }