From 6efe100064e0a1e6638b2ccfcf6e9796d1814d8a Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Sun, 6 Dec 2015 17:59:26 +0000 Subject: [PATCH 1/4] Added new exception interface and updated transformers --- app/Exceptions/ExceptionInterface.php | 22 +++++++++++++++++++ ...ansformer.php => ExceptionTransformer.php} | 14 +++++++----- config/exceptions.php | 2 +- 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 app/Exceptions/ExceptionInterface.php rename app/Exceptions/Transformers/{ModelNotFoundTransformer.php => ExceptionTransformer.php} (63%) diff --git a/app/Exceptions/ExceptionInterface.php b/app/Exceptions/ExceptionInterface.php new file mode 100644 index 00000000..15ce0eee --- /dev/null +++ b/app/Exceptions/ExceptionInterface.php @@ -0,0 +1,22 @@ + + */ +interface ExceptionInterface +{ + // +} diff --git a/app/Exceptions/Transformers/ModelNotFoundTransformer.php b/app/Exceptions/Transformers/ExceptionTransformer.php similarity index 63% rename from app/Exceptions/Transformers/ModelNotFoundTransformer.php rename to app/Exceptions/Transformers/ExceptionTransformer.php index 69ea37ba..cd8fc267 100644 --- a/app/Exceptions/Transformers/ModelNotFoundTransformer.php +++ b/app/Exceptions/Transformers/ExceptionTransformer.php @@ -1,7 +1,7 @@ */ -class ModelNotFoundTransformer implements TransformerInterface +class ExceptionTransformer implements TransformerInterface { /** * Transform the provided exception. @@ -32,8 +34,10 @@ class ModelNotFoundTransformer implements TransformerInterface */ public function transform(Exception $exception) { - if ($exception instanceof ModelNotFoundException) { - $exception = new NotFoundHttpException('Resource not found'); + if ($exception instanceof ExceptionInterface) { + $exception = new BadRequestHttpException($exception->getMessage()); + } elseif ($exception instanceof ModelNotFoundException) { + $exception = new NotFoundHttpException('Resource not found.'); } return $exception; diff --git a/config/exceptions.php b/config/exceptions.php index 06dcaffe..11064dd6 100644 --- a/config/exceptions.php +++ b/config/exceptions.php @@ -27,7 +27,7 @@ return [ 'transformers' => [ 'GrahamCampbell\Exceptions\Transformers\CsrfTransformer', - 'CachetHQ\Cachet\Exceptions\Transformers\ModelNotFoundTransformer', + 'CachetHQ\Cachet\Exceptions\Transformers\ExceptionTransformer', ], /* From e92cb7fb019d1a76a98101ad45eddffb235afaa3 Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Sun, 6 Dec 2015 18:01:33 +0000 Subject: [PATCH 2/4] Added AlreadySubscribedException Closes #1201 --- app/Exceptions/AlreadySubscribedException.php | 24 +++++++++++++++++++ .../SubscribeSubscriberCommandHandler.php | 7 ++++++ 2 files changed, 31 insertions(+) create mode 100644 app/Exceptions/AlreadySubscribedException.php diff --git a/app/Exceptions/AlreadySubscribedException.php b/app/Exceptions/AlreadySubscribedException.php new file mode 100644 index 00000000..6929051f --- /dev/null +++ b/app/Exceptions/AlreadySubscribedException.php @@ -0,0 +1,24 @@ + + */ +class AlreadySubscribedException extends Exception implements ExceptionInterface +{ + // +} diff --git a/app/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php b/app/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php index e96fb8fe..9ab617ed 100644 --- a/app/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php +++ b/app/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php @@ -14,6 +14,7 @@ namespace CachetHQ\Cachet\Handlers\Commands\Subscriber; use CachetHQ\Cachet\Commands\Subscriber\SubscribeSubscriberCommand; use CachetHQ\Cachet\Commands\Subscriber\VerifySubscriberCommand; use CachetHQ\Cachet\Events\Subscriber\SubscriberHasSubscribedEvent; +use CachetHQ\Cachet\Exceptions\AlreadySubscribedException; use CachetHQ\Cachet\Models\Subscriber; use Illuminate\Foundation\Bus\DispatchesJobs; @@ -26,10 +27,16 @@ class SubscribeSubscriberCommandHandler * * @param \CachetHQ\Cachet\Commands\Subscriber\SubscribeSubscriberCommand $command * + * @throws \CachetHQ\Cachet\Exceptions\AlreadySubscribedException + * * @return \CachetHQ\Cachet\Models\Subscriber */ public function handle(SubscribeSubscriberCommand $command) { + if (Subscriber::where('email', $command->email)->first()) { + throw new AlreadySubscribedException("Cannot subscribe {$command->email} because they're already subscribed."); + } + $subscriber = Subscriber::create(['email' => $command->email]); if ($command->verified) { From ef220b1c408b337a98fc7f4d2e019e34fc82ce1e Mon Sep 17 00:00:00 2001 From: Graham Campbell Date: Sun, 6 Dec 2015 13:02:14 -0500 Subject: [PATCH 3/4] Applied fixes from StyleCI --- app/Exceptions/Transformers/ExceptionTransformer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Exceptions/Transformers/ExceptionTransformer.php b/app/Exceptions/Transformers/ExceptionTransformer.php index cd8fc267..2e4fb2b9 100644 --- a/app/Exceptions/Transformers/ExceptionTransformer.php +++ b/app/Exceptions/Transformers/ExceptionTransformer.php @@ -1,7 +1,7 @@ Date: Sun, 6 Dec 2015 18:13:22 +0000 Subject: [PATCH 4/4] Fixed typo --- app/Exceptions/AlreadySubscribedException.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Exceptions/AlreadySubscribedException.php b/app/Exceptions/AlreadySubscribedException.php index 6929051f..dacf00dc 100644 --- a/app/Exceptions/AlreadySubscribedException.php +++ b/app/Exceptions/AlreadySubscribedException.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace CachetHQ\Cachet\Exception; +namespace CachetHQ\Cachet\Exceptions; use Exception;