mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-03 16:51:40 +09:00
- 2022년 3월 개발팀 결정사항 적용 - 모듈 등 서드파티 자료 개발시 composer를 사용하면 상위 경로에 있는 코어의 composer.json을 수정하고, 코어의 vendor 디렉토리를 건드리는 것이 기본값임 - 이를 방지하기 위해 코어의 composer.json과 vendor를 common 디렉토리 안으로 이동하여, 모듈 경로에서 상위 폴더로 인식하지 않도록 함
92 lines
No EOL
2.3 KiB
PHP
92 lines
No EOL
2.3 KiB
PHP
<?php
|
|
|
|
namespace Egulias\EmailValidator;
|
|
|
|
use Egulias\EmailValidator\Parser;
|
|
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
|
|
{
|
|
|
|
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->token["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 = array_merge($localPartParser->getWarnings(), $this->warnings);
|
|
|
|
return $localPartResult;
|
|
}
|
|
|
|
private function processIDRight() : Result
|
|
{
|
|
$domainPartParser = new IDRightPart($this->lexer);
|
|
$domainPartResult = $domainPartParser->parse();
|
|
$this->idRight = $domainPartParser->domainPart();
|
|
$this->warnings = array_merge($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();
|
|
}
|
|
}
|
|
} |