diff options
Diffstat (limited to 'vendor/league/uri-interfaces/Exceptions/ConversionFailed.php')
-rw-r--r-- | vendor/league/uri-interfaces/Exceptions/ConversionFailed.php | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/vendor/league/uri-interfaces/Exceptions/ConversionFailed.php b/vendor/league/uri-interfaces/Exceptions/ConversionFailed.php new file mode 100644 index 000000000..973ffb320 --- /dev/null +++ b/vendor/league/uri-interfaces/Exceptions/ConversionFailed.php @@ -0,0 +1,46 @@ +<?php + +/** + * League.Uri (https://uri.thephpleague.com) + * + * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Exceptions; + +use League\Uri\Idna\Error; +use League\Uri\Idna\Result; +use Stringable; + +final class ConversionFailed extends SyntaxError +{ + private function __construct( + string $message, + private readonly string $host, + private readonly Result $result + ) { + parent::__construct($message); + } + + public static function dueToIdnError(Stringable|string $host, Result $result): self + { + $reasons = array_map(fn (Error $error): string => $error->description(), $result->errors()); + + return new self('Host `'.$host.'` is invalid: '.implode('; ', $reasons).'.', (string) $host, $result); + } + + public function getHost(): string + { + return $this->host; + } + + public function getResult(): Result + { + return $this->result; + } +} |