diff options
author | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
commit | 0c8af4992cb0f7589dcafaad65ada12753c64594 (patch) | |
tree | 18e83d068c3e7dd2499331de977782b382279396 /vendor/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php |
initial
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php b/vendor/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php new file mode 100644 index 0000000..75e8715 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php @@ -0,0 +1,51 @@ +<?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)); + } +} |