summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php b/vendor/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php
new file mode 100644
index 0000000..76d8098
--- /dev/null
+++ b/vendor/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php
@@ -0,0 +1,49 @@
+<?php
+namespace Aws\Api\Parser;
+
+use Aws\Api\Service;
+use Aws\Api\StructureShape;
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\StreamInterface;
+
+/**
+ * @internal Implements REST-JSON parsing (e.g., Glacier, Elastic Transcoder)
+ */
+class RestJsonParser extends AbstractRestParser
+{
+ 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();
+ }
+
+ protected function payload(
+ ResponseInterface $response,
+ StructureShape $member,
+ array &$result
+ ) {
+ $jsonBody = $this->parseJson($response->getBody(), $response);
+
+ if ($jsonBody) {
+ $result += $this->parser->parse($member, $jsonBody);
+ }
+ }
+
+ public function parseMemberFromStream(
+ StreamInterface $stream,
+ StructureShape $member,
+ $response
+ ) {
+ $jsonBody = $this->parseJson($stream, $response);
+ if ($jsonBody) {
+ return $this->parser->parse($member, $jsonBody);
+ }
+ return [];
+ }
+}