diff options
Diffstat (limited to 'vendor/league/uri-interfaces/Idna/Error.php')
-rw-r--r-- | vendor/league/uri-interfaces/Idna/Error.php | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/league/uri-interfaces/Idna/Error.php b/vendor/league/uri-interfaces/Idna/Error.php new file mode 100644 index 000000000..eb51e9dd5 --- /dev/null +++ b/vendor/league/uri-interfaces/Idna/Error.php @@ -0,0 +1,64 @@ +<?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. + */ + +namespace League\Uri\Idna; + +enum Error: int +{ + case NONE = 0; + case EMPTY_LABEL = 1; + case LABEL_TOO_LONG = 2; + case DOMAIN_NAME_TOO_LONG = 4; + case LEADING_HYPHEN = 8; + case TRAILING_HYPHEN = 0x10; + case HYPHEN_3_4 = 0x20; + case LEADING_COMBINING_MARK = 0x40; + case DISALLOWED = 0x80; + case PUNYCODE = 0x100; + case LABEL_HAS_DOT = 0x200; + case INVALID_ACE_LABEL = 0x400; + case BIDI = 0x800; + case CONTEXTJ = 0x1000; + case CONTEXTO_PUNCTUATION = 0x2000; + case CONTEXTO_DIGITS = 0x4000; + + public function description(): string + { + return match ($this) { + self::NONE => 'No error has occurred', + self::EMPTY_LABEL => 'a non-final domain name label (or the whole domain name) is empty', + self::LABEL_TOO_LONG => 'a domain name label is longer than 63 bytes', + self::DOMAIN_NAME_TOO_LONG => 'a domain name is longer than 255 bytes in its storage form', + self::LEADING_HYPHEN => 'a label starts with a hyphen-minus ("-")', + self::TRAILING_HYPHEN => 'a label ends with a hyphen-minus ("-")', + self::HYPHEN_3_4 => 'a label contains hyphen-minus ("-") in the third and fourth positions', + self::LEADING_COMBINING_MARK => 'a label starts with a combining mark', + self::DISALLOWED => 'a label or domain name contains disallowed characters', + self::PUNYCODE => 'a label starts with "xn--" but does not contain valid Punycode', + self::LABEL_HAS_DOT => 'a label contains a dot=full stop', + self::INVALID_ACE_LABEL => 'An ACE label does not contain a valid label string', + self::BIDI => 'a label does not meet the IDNA BiDi requirements (for right-to-left characters)', + self::CONTEXTJ => 'a label does not meet the IDNA CONTEXTJ requirements', + self::CONTEXTO_DIGITS => 'a label does not meet the IDNA CONTEXTO requirements for digits', + self::CONTEXTO_PUNCTUATION => 'a label does not meet the IDNA CONTEXTO requirements for punctuation characters. Some punctuation characters "Would otherwise have been DISALLOWED" but are allowed in certain contexts', + }; + } + + public static function filterByErrorBytes(int $errors): array + { + return array_values( + array_filter( + self::cases(), + fn (self $error): bool => 0 !== ($error->value & $errors) + ) + ); + } +} |