PHP 8.2.30
Preview: MessageIDParser.php Size: 2.29 KB
/proc/thread-self/root/home/byroehnu/easetack.com/vendor/egulias/email-validator/src/MessageIDParser.php

<?php

namespace Egulias\EmailValidator;

use Egulias\EmailValidator\Result\Result;
use Egulias\EmailValidator\Parser\IDLeftPart;
use Egulias\EmailValidator\Parser\IDRightPart;
use Egulias\EmailValidator\Result\ValidEmail;
use Egulias\EmailValidator\Result\InvalidEmail;
use Egulias\EmailValidator\Warning\EmailTooLong;
use Egulias\EmailValidator\Result\Reason\NoLocalPart;

class MessageIDParser extends Parser
{

    public const EMAILID_MAX_LENGTH = 254;

    /**
     * @var string
     */
    protected $idLeft = '';

    /**
     * @var string
     */
    protected $idRight = '';

    public function parse(string $str): Result
    {
        $result = parent::parse($str);

        $this->addLongEmailWarning($this->idLeft, $this->idRight);

        return $result;
    }

    protected function preLeftParsing(): Result
    {
        if (!$this->hasAtToken()) {
            return new InvalidEmail(new NoLocalPart(), $this->lexer->current->value);
        }
        return new ValidEmail();
    }

    protected function parseLeftFromAt(): Result
    {
        return $this->processIDLeft();
    }

    protected function parseRightFromAt(): Result
    {
        return $this->processIDRight();
    }

    private function processIDLeft(): Result
    {
        $localPartParser = new IDLeftPart($this->lexer);
        $localPartResult = $localPartParser->parse();
        $this->idLeft = $localPartParser->localPart();
        $this->warnings = [...$localPartParser->getWarnings(), ...$this->warnings];

        return $localPartResult;
    }

    private function processIDRight(): Result
    {
        $domainPartParser = new IDRightPart($this->lexer);
        $domainPartResult = $domainPartParser->parse();
        $this->idRight = $domainPartParser->domainPart();
        $this->warnings = [...$domainPartParser->getWarnings(), ...$this->warnings];

        return $domainPartResult;
    }

    public function getLeftPart(): string
    {
        return $this->idLeft;
    }

    public function getRightPart(): string
    {
        return $this->idRight;
    }

    private function addLongEmailWarning(string $localPart, string $parsedDomainPart): void
    {
        if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAILID_MAX_LENGTH) {
            $this->warnings[EmailTooLong::CODE] = new EmailTooLong();
        }
    }
}

Directory Contents

Dirs: 4 × Files: 5

Name Size Perms Modified Actions
Parser DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
Result DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
Warning DIR
- drwxrwxrwx 2025-05-16 16:14:39
Edit Download
8.50 KB lrw-rw-rw- 2025-03-06 22:45:56
Edit Download
2.32 KB lrw-rw-rw- 2025-03-06 22:45:56
Edit Download
1.21 KB lrw-rw-rw- 2025-03-06 22:45:56
Edit Download
2.29 KB lrw-rw-rw- 2025-03-06 22:45:56
Edit Download
1.75 KB lrw-rw-rw- 2025-03-06 22:45:56
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).