mirror of
https://github.com/retailcrm/mailgun-php.git
synced 2024-11-26 23:06:06 +03:00
56 lines
1.5 KiB
PHP
56 lines
1.5 KiB
PHP
|
<?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();
|
||
|
} if (stripos($contentType, 'xml') !== false) {
|
||
|
$result = $result->xml();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
}
|