diff --git a/src/Drivers/Abstract/Decoders/AbstractDecoder.php b/src/Drivers/Abstract/Decoders/AbstractDecoder.php index a1ee53ea..61e350d2 100644 --- a/src/Drivers/Abstract/Decoders/AbstractDecoder.php +++ b/src/Drivers/Abstract/Decoders/AbstractDecoder.php @@ -22,7 +22,7 @@ abstract class AbstractDecoder implements DecoderInterface $decoded = $this->decode($input); } catch (DecoderException $e) { if (!$this->hasSuccessor()) { - $this->fail($e->getMessage()); + throw new DecoderException($e->getMessage()); } return $this->successor->handle($input); @@ -36,11 +36,6 @@ abstract class AbstractDecoder implements DecoderInterface return $this->successor !== null; } - protected function fail(string $message = 'Unable to decode given input.'): void - { - throw new DecoderException($message); - } - protected function inputType($input): AbstractType { return MimeSniffer::createFromString($input)->getType(); diff --git a/src/Drivers/Gd/Decoders/ArrayColorDecoder.php b/src/Drivers/Gd/Decoders/ArrayColorDecoder.php index 9f8d7a70..3d694e49 100644 --- a/src/Drivers/Gd/Decoders/ArrayColorDecoder.php +++ b/src/Drivers/Gd/Decoders/ArrayColorDecoder.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Drivers\Gd\Decoders; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; use Intervention\Image\Drivers\Gd\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -16,7 +17,7 @@ class ArrayColorDecoder extends AbstractDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (! $this->isValidColorArray($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (count($input) === 3) { diff --git a/src/Drivers/Gd/Decoders/Base64ImageDecoder.php b/src/Drivers/Gd/Decoders/Base64ImageDecoder.php index fb22e3ba..ece55147 100644 --- a/src/Drivers/Gd/Decoders/Base64ImageDecoder.php +++ b/src/Drivers/Gd/Decoders/Base64ImageDecoder.php @@ -2,6 +2,7 @@ namespace Intervention\Image\Drivers\Gd\Decoders; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -14,7 +15,7 @@ class Base64ImageDecoder extends BinaryImageDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (! $this->isValidBase64($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode(base64_decode($input)); diff --git a/src/Drivers/Gd/Decoders/BinaryImageDecoder.php b/src/Drivers/Gd/Decoders/BinaryImageDecoder.php index f4a36cf2..467493b0 100644 --- a/src/Drivers/Gd/Decoders/BinaryImageDecoder.php +++ b/src/Drivers/Gd/Decoders/BinaryImageDecoder.php @@ -2,7 +2,6 @@ namespace Intervention\Image\Drivers\Gd\Decoders; -use GdImage; use Intervention\Image\Collection; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; use Intervention\Image\Drivers\Gd\Frame; @@ -10,21 +9,21 @@ use Intervention\Image\Drivers\Gd\Image; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; -use Intervention\MimeSniffer\MimeSniffer; use Intervention\MimeSniffer\Types\ImageGif; use Intervention\Gif\Decoder as GifDecoder; use Intervention\Gif\Splitter as GifSplitter; +use Intervention\Image\Exceptions\DecoderException; class BinaryImageDecoder extends AbstractDecoder implements DecoderInterface { public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (! $this->inputType($input)->isBinary()) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (is_a($this->inputType($input), ImageGif::class)) { @@ -34,7 +33,7 @@ class BinaryImageDecoder extends AbstractDecoder implements DecoderInterface $gd = @imagecreatefromstring($input); if ($gd === false) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (! imageistruecolor($gd)) { diff --git a/src/Drivers/Gd/Decoders/DataUriImageDecoder.php b/src/Drivers/Gd/Decoders/DataUriImageDecoder.php index b1c8f245..32155781 100644 --- a/src/Drivers/Gd/Decoders/DataUriImageDecoder.php +++ b/src/Drivers/Gd/Decoders/DataUriImageDecoder.php @@ -2,11 +2,11 @@ namespace Intervention\Image\Drivers\Gd\Decoders; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Traits\CanDecodeDataUri; -use Intervention\MimeSniffer\MimeSniffer; class DataUriImageDecoder extends BinaryImageDecoder implements DecoderInterface { @@ -15,13 +15,13 @@ class DataUriImageDecoder extends BinaryImageDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } $uri = $this->decodeDataUri($input); if (! $uri->isValid()) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if ($uri->isBase64Encoded()) { diff --git a/src/Drivers/Gd/Decoders/FilePathImageDecoder.php b/src/Drivers/Gd/Decoders/FilePathImageDecoder.php index 6448a645..a826734b 100644 --- a/src/Drivers/Gd/Decoders/FilePathImageDecoder.php +++ b/src/Drivers/Gd/Decoders/FilePathImageDecoder.php @@ -3,6 +3,7 @@ namespace Intervention\Image\Drivers\Gd\Decoders; use Exception; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -12,15 +13,15 @@ class FilePathImageDecoder extends BinaryImageDecoder implements DecoderInterfac public function decode($input): ImageInterface|ColorInterface { if (! is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } try { if (! @is_file($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } } catch (Exception $e) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode(file_get_contents($input)); diff --git a/src/Drivers/Gd/Decoders/HexColorDecoder.php b/src/Drivers/Gd/Decoders/HexColorDecoder.php index 2329fe50..17134634 100644 --- a/src/Drivers/Gd/Decoders/HexColorDecoder.php +++ b/src/Drivers/Gd/Decoders/HexColorDecoder.php @@ -2,7 +2,7 @@ namespace Intervention\Image\Drivers\Gd\Decoders; -use Intervention\Image\Drivers\Gd\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -12,14 +12,14 @@ class HexColorDecoder extends ArrayColorDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } $pattern = '/^#?([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{1,2})$/i'; $result = preg_match($pattern, $input, $matches); if ($result !== 1) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode([ diff --git a/src/Drivers/Gd/Decoders/ImageObjectDecoder.php b/src/Drivers/Gd/Decoders/ImageObjectDecoder.php index 9dffd5b4..72851dd8 100644 --- a/src/Drivers/Gd/Decoders/ImageObjectDecoder.php +++ b/src/Drivers/Gd/Decoders/ImageObjectDecoder.php @@ -3,6 +3,7 @@ namespace Intervention\Image\Drivers\Gd\Decoders; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -12,7 +13,7 @@ class ImageObjectDecoder extends AbstractDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (! is_a($input, ImageInterface::class)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return $input; diff --git a/src/Drivers/Gd/Decoders/RgbStringColorDecoder.php b/src/Drivers/Gd/Decoders/RgbStringColorDecoder.php index 53ded7c5..300dd4a1 100644 --- a/src/Drivers/Gd/Decoders/RgbStringColorDecoder.php +++ b/src/Drivers/Gd/Decoders/RgbStringColorDecoder.php @@ -2,6 +2,7 @@ namespace Intervention\Image\Drivers\Gd\Decoders; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -11,11 +12,11 @@ class RgbStringColorDecoder extends ArrayColorDecoder implements DecoderInterfac public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (substr($input, 0, 3) !== 'rgb') { - $this->fail(); + throw new DecoderException('Unable to decode input'); } // rgb string like rgb(102, 200, 0) @@ -30,6 +31,6 @@ class RgbStringColorDecoder extends ArrayColorDecoder implements DecoderInterfac return parent::decode([$matches['r'], $matches['g'], $matches['b'], $matches['a']]); } - $this->fail(); + throw new DecoderException('Unable to decode input'); } } diff --git a/src/Drivers/Gd/Decoders/TransparentColorDecoder.php b/src/Drivers/Gd/Decoders/TransparentColorDecoder.php index dd77d055..64f4adfc 100644 --- a/src/Drivers/Gd/Decoders/TransparentColorDecoder.php +++ b/src/Drivers/Gd/Decoders/TransparentColorDecoder.php @@ -2,18 +2,17 @@ namespace Intervention\Image\Drivers\Gd\Decoders; -use Intervention\Image\Drivers\Gd\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; -use Intervention\Image\Traits\CanValidateColors; class TransparentColorDecoder extends ArrayColorDecoder implements DecoderInterface { public function decode($input): ImageInterface|ColorInterface { if (! is_string($input) || strtolower($input) !== 'transparent') { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode([0, 0, 0, 0]); diff --git a/src/Drivers/Imagick/Decoders/ArrayColorDecoder.php b/src/Drivers/Imagick/Decoders/ArrayColorDecoder.php index aee0df57..12f8aaa2 100644 --- a/src/Drivers/Imagick/Decoders/ArrayColorDecoder.php +++ b/src/Drivers/Imagick/Decoders/ArrayColorDecoder.php @@ -5,6 +5,7 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; use ImagickPixel; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; use Intervention\Image\Drivers\Imagick\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -17,7 +18,7 @@ class ArrayColorDecoder extends AbstractDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (! $this->isValidColorArray($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (count($input) === 3) { diff --git a/src/Drivers/Imagick/Decoders/Base64ImageDecoder.php b/src/Drivers/Imagick/Decoders/Base64ImageDecoder.php index 46d34430..fe30c4fb 100644 --- a/src/Drivers/Imagick/Decoders/Base64ImageDecoder.php +++ b/src/Drivers/Imagick/Decoders/Base64ImageDecoder.php @@ -2,6 +2,7 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -14,7 +15,7 @@ class Base64ImageDecoder extends BinaryImageDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (! $this->isValidBase64($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode(base64_decode($input)); diff --git a/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php b/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php index f09a50ff..7a8b4e02 100644 --- a/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php +++ b/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php @@ -7,6 +7,7 @@ use Intervention\Image\Collection; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; use Intervention\Image\Drivers\Imagick\Frame; use Intervention\Image\Drivers\Imagick\Image; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -16,11 +17,11 @@ class BinaryImageDecoder extends AbstractDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } - if (! $this->inputType($input)->isBinary()) { - $this->fail(); + if (!$this->inputType($input)->isBinary()) { + throw new DecoderException('Unable to decode input'); } $imagick = new Imagick(); diff --git a/src/Drivers/Imagick/Decoders/DataUriImageDecoder.php b/src/Drivers/Imagick/Decoders/DataUriImageDecoder.php index 9f80b117..1dcff224 100644 --- a/src/Drivers/Imagick/Decoders/DataUriImageDecoder.php +++ b/src/Drivers/Imagick/Decoders/DataUriImageDecoder.php @@ -2,11 +2,11 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Traits\CanDecodeDataUri; -use Intervention\MimeSniffer\MimeSniffer; class DataUriImageDecoder extends BinaryImageDecoder implements DecoderInterface { @@ -15,13 +15,13 @@ class DataUriImageDecoder extends BinaryImageDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } $uri = $this->decodeDataUri($input); if (! $uri->isValid()) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if ($uri->isBase64Encoded()) { diff --git a/src/Drivers/Imagick/Decoders/FilePathImageDecoder.php b/src/Drivers/Imagick/Decoders/FilePathImageDecoder.php index a4fe1d30..f1d7346e 100644 --- a/src/Drivers/Imagick/Decoders/FilePathImageDecoder.php +++ b/src/Drivers/Imagick/Decoders/FilePathImageDecoder.php @@ -3,6 +3,7 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; use Exception; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -12,15 +13,15 @@ class FilePathImageDecoder extends BinaryImageDecoder implements DecoderInterfac public function decode($input): ImageInterface|ColorInterface { if (! is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } try { if (! @is_file($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } } catch (Exception $e) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode(file_get_contents($input)); diff --git a/src/Drivers/Imagick/Decoders/HexColorDecoder.php b/src/Drivers/Imagick/Decoders/HexColorDecoder.php index 2eafd126..84526d16 100644 --- a/src/Drivers/Imagick/Decoders/HexColorDecoder.php +++ b/src/Drivers/Imagick/Decoders/HexColorDecoder.php @@ -2,7 +2,7 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; -use Intervention\Image\Drivers\Imagick\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -12,14 +12,14 @@ class HexColorDecoder extends ArrayColorDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } $pattern = '/^#?([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{1,2})$/i'; $result = preg_match($pattern, $input, $matches); if ($result !== 1) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode([ diff --git a/src/Drivers/Imagick/Decoders/ImageObjectDecoder.php b/src/Drivers/Imagick/Decoders/ImageObjectDecoder.php index 72318e2a..9f72634f 100644 --- a/src/Drivers/Imagick/Decoders/ImageObjectDecoder.php +++ b/src/Drivers/Imagick/Decoders/ImageObjectDecoder.php @@ -3,6 +3,7 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; @@ -12,7 +13,7 @@ class ImageObjectDecoder extends AbstractDecoder implements DecoderInterface public function decode($input): ImageInterface|ColorInterface { if (! is_a($input, ImageInterface::class)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return $input; diff --git a/src/Drivers/Imagick/Decoders/RgbStringColorDecoder.php b/src/Drivers/Imagick/Decoders/RgbStringColorDecoder.php index 4e9c9fa2..7b036033 100644 --- a/src/Drivers/Imagick/Decoders/RgbStringColorDecoder.php +++ b/src/Drivers/Imagick/Decoders/RgbStringColorDecoder.php @@ -6,27 +6,27 @@ use ImagickPixel; use ImagickPixelException; use Intervention\Image\Drivers\Abstract\Decoders\AbstractDecoder; use Intervention\Image\Drivers\Imagick\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; -use Intervention\Image\Traits\CanValidateColors; class RgbStringColorDecoder extends AbstractDecoder implements DecoderInterface { public function decode($input): ImageInterface|ColorInterface { if (!is_string($input)) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } if (substr($input, 0, 3) !== 'rgb') { - $this->fail(); + throw new DecoderException('Unable to decode input'); } try { $pixel = new ImagickPixel($input); } catch (ImagickPixelException $e) { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return new Color($pixel); diff --git a/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php b/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php index 5d3e3153..b93ef706 100644 --- a/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php +++ b/src/Drivers/Imagick/Decoders/TransparentColorDecoder.php @@ -2,18 +2,17 @@ namespace Intervention\Image\Drivers\Imagick\Decoders; -use Intervention\Image\Drivers\Imagick\Color; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\DecoderInterface; use Intervention\Image\Interfaces\ImageInterface; -use Intervention\Image\Traits\CanValidateColors; class TransparentColorDecoder extends ArrayColorDecoder implements DecoderInterface { public function decode($input): ImageInterface|ColorInterface { if (! is_string($input) || strtolower($input) !== 'transparent') { - $this->fail(); + throw new DecoderException('Unable to decode input'); } return parent::decode([0, 0, 0, 0]);