123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- namespace Aws\Api\Parser;
- use Aws\Api\Service;
- use Aws\Api\StructureShape;
- use Aws\Result;
- use Aws\CommandInterface;
- use Psr\Http\Message\ResponseInterface;
- use Psr\Http\Message\StreamInterface;
- /**
- * @internal Parses query (XML) responses (e.g., EC2, SQS, and many others)
- */
- class QueryParser extends AbstractParser
- {
- use PayloadParserTrait;
- /** @var bool */
- private $honorResultWrapper;
- /**
- * @param Service $api Service description
- * @param XmlParser $xmlParser Optional XML parser
- * @param bool $honorResultWrapper Set to false to disable the peeling
- * back of result wrappers from the
- * output structure.
- */
- public function __construct(
- Service $api,
- XmlParser $xmlParser = null,
- $honorResultWrapper = true
- ) {
- parent::__construct($api);
- $this->parser = $xmlParser ?: new XmlParser();
- $this->honorResultWrapper = $honorResultWrapper;
- }
- public function __invoke(
- CommandInterface $command,
- ResponseInterface $response
- ) {
- $output = $this->api->getOperation($command->getName())->getOutput();
- $xml = $this->parseXml($response->getBody(), $response);
- if ($this->honorResultWrapper && $output['resultWrapper']) {
- $xml = $xml->{$output['resultWrapper']};
- }
- return new Result($this->parser->parse($output, $xml));
- }
- public function parseMemberFromStream(
- StreamInterface $stream,
- StructureShape $member,
- $response
- ) {
- $xml = $this->parseXml($stream, $response);
- return $this->parser->parse($member, $xml);
- }
- }
|