1
0
mirror of https://github.com/guzzle/guzzle.git synced 2025-02-25 02:22:57 +01:00

Removing ErrorResponsePlugin

This commit is contained in:
Michael Dowling 2013-10-27 17:29:19 -07:00
parent 00bb8b9a89
commit 126217471d
4 changed files with 0 additions and 128 deletions

View File

@ -1,22 +0,0 @@
<?php
namespace Guzzle\Plugin\ErrorResponse;
use Guzzle\Service\Command\CommandInterface;
use Guzzle\Http\Message\Response;
/**
* Interface used to create an exception from an error response
*/
interface ErrorResponseExceptionInterface
{
/**
* Create an exception for a command based on a command and an error response definition
*
* @param CommandInterface $command Command that was sent
* @param Response $response The error response
*
* @return self
*/
public static function fromCommand(CommandInterface $command, Response $response);
}

View File

@ -1,72 +0,0 @@
<?php
namespace Guzzle\Plugin\ErrorResponse;
use Guzzle\Common\Event;
use Guzzle\Http\Message\RequestInterface;
use Guzzle\Service\Command\CommandInterface;
use Guzzle\Service\Description\Operation;
use Guzzle\Plugin\ErrorResponse\Exception\ErrorResponseException;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Converts generic Guzzle response exceptions into errorResponse exceptions
*/
class ErrorResponsePlugin implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array('command.before_send' => array('onCommandBeforeSend', -1));
}
/**
* Adds a listener to requests before they sent from a command
*
* @param Event $event Event emitted
*/
public function onCommandBeforeSend(Event $event)
{
$command = $event['command'];
if ($operation = $command->getOperation()) {
if ($operation->getErrorResponses()) {
$request = $command->getRequest();
$request->getEventDispatcher()
->addListener('request.complete', $this->getErrorClosure($request, $command, $operation));
}
}
}
/**
* @param RequestInterface $request Request that received an error
* @param CommandInterface $command Command that created the request
* @param Operation $operation Operation that defines the request and errors
*
* @return \Closure Returns a closure
* @throws ErrorResponseException
*/
protected function getErrorClosure(RequestInterface $request, CommandInterface $command, Operation $operation)
{
return function (Event $event) use ($request, $command, $operation) {
$response = $event['response'];
foreach ($operation->getErrorResponses() as $error) {
if (!isset($error['class'])) {
continue;
}
if (isset($error['code']) && $response->getStatusCode() != $error['code']) {
continue;
}
if (isset($error['reason']) && $response->getReasonPhrase() != $error['reason']) {
continue;
}
$className = $error['class'];
$errorClassInterface = __NAMESPACE__ . '\\ErrorResponseExceptionInterface';
if (!class_exists($className)) {
throw new ErrorResponseException("{$className} does not exist");;
} elseif (!is_subclass_of($className, $errorClassInterface)) {
throw new ErrorResponseException("{$className} must implement {$errorClassInterface}");
}
throw $className::fromCommand($command, $response);
}
};
}
}

View File

@ -1,7 +0,0 @@
<?php
namespace Guzzle\Plugin\ErrorResponse\Exception;
use Guzzle\Common\Exception\RuntimeException;
class ErrorResponseException extends RuntimeException {}

View File

@ -1,27 +0,0 @@
{
"name": "guzzle/plugin-error-response",
"description": "Guzzle errorResponse plugin for creating error exceptions based on a service description",
"homepage": "http://guzzlephp.org/",
"keywords": ["plugin", "guzzle"],
"license": "MIT",
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"require": {
"php": ">=5.3.2",
"guzzle/service": "self.version"
},
"autoload": {
"psr-0": { "Guzzle\\Plugin\\ErrorResponse": "" }
},
"target-dir": "Guzzle/Plugin/ErrorResponse",
"extra": {
"branch-alias": {
"dev-master": "3.7-dev"
}
}
}