diff options
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php')
-rw-r--r-- | vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php b/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php new file mode 100644 index 0000000..4fe3803 --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Service/Command/DefaultResponseParser.php @@ -0,0 +1,55 @@ +<?php + +namespace Guzzle\Service\Command; + +use Guzzle\Http\Message\Response; + +/** + * Default HTTP response parser used to marshal JSON responses into arrays and XML responses into SimpleXMLElement + */ +class DefaultResponseParser implements ResponseParserInterface +{ + /** @var self */ + protected static $instance; + + /** + * @return self + * @codeCoverageIgnore + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new self; + } + + return self::$instance; + } + + public function parse(CommandInterface $command) + { + $response = $command->getRequest()->getResponse(); + + // Account for hard coded content-type values specified in service descriptions + if ($contentType = $command['command.expects']) { + $response->setHeader('Content-Type', $contentType); + } else { + $contentType = (string) $response->getHeader('Content-Type'); + } + + return $this->handleParsing($command, $response, $contentType); + } + + protected function handleParsing(CommandInterface $command, Response $response, $contentType) + { + $result = $response; + if ($result->getBody()) { + if (stripos($contentType, 'json') !== false) { + $result = $result->json(); + } elseif (stripos($contentType, 'xml') !== false) { + $result = $result->xml(); + } + } + + return $result; + } +} |