| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace Aws\Api\Parser;
- use Aws\Api\StructureShape;
- use Aws\Api\Service;
- use Aws\Result;
- use Aws\CommandInterface;
- use Psr\Http\Message\ResponseInterface;
- use Psr\Http\Message\StreamInterface;
- /**
- * @internal Implements JSON-RPC parsing (e.g., DynamoDB)
- */
- class JsonRpcParser extends AbstractParser
- {
- use PayloadParserTrait;
- /**
- * @param Service $api Service description
- * @param JsonParser $parser JSON body builder
- */
- public function __construct(Service $api, JsonParser $parser = null)
- {
- parent::__construct($api);
- $this->parser = $parser ?: new JsonParser();
- }
- public function __invoke(
- CommandInterface $command,
- ResponseInterface $response
- ) {
- $operation = $this->api->getOperation($command->getName());
- $result = null === $operation['output']
- ? null
- : $this->parseMemberFromStream(
- $response->getBody(),
- $operation->getOutput(),
- $response
- );
- return new Result($result ?: []);
- }
- public function parseMemberFromStream(
- StreamInterface $stream,
- StructureShape $member,
- $response
- ) {
- return $this->parser->parse($member, $this->parseJson($stream, $response));
- }
- }
|