Passed
Push — 3.x ( 312b65...a5ed8d )
by Eduardo Gulias
01:48
created

SpoofCheckValidation   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Test Coverage

Coverage 61.53%

Importance

Changes 0
Metric Value
eloc 11
c 0
b 0
f 0
dl 0
loc 40
ccs 8
cts 13
cp 0.6153
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 2
A getError() 0 3 1
A getWarnings() 0 3 1
A isValid() 0 10 2
1
<?php
2
3
namespace Egulias\EmailValidator\Validation\Extra;
4
5
use \Spoofchecker;
6
use Egulias\EmailValidator\EmailLexer;
7
use Egulias\EmailValidator\Result\SpoofEmail;
8
use Egulias\EmailValidator\Result\InvalidEmail;
9
use Egulias\EmailValidator\Validation\EmailValidation;
10
11
class SpoofCheckValidation implements EmailValidation
12
{
13
    /**
14
     * @var InvalidEmail|null
15
     */
16
    private $error;
17
18 5
    public function __construct()
19
    {
20 5
        if (!extension_loaded('intl')) {
21
            throw new \LogicException(sprintf('The %s class requires the Intl extension.', __CLASS__));
22
        }
23
    }
24
25
    /**
26
     * @psalm-suppress InvalidArgument
27
     */
28 5
    public function isValid(string $email, EmailLexer $emailLexer) : bool
29
    {
30 5
        $checker = new Spoofchecker();
31 5
        $checker->setChecks(Spoofchecker::SINGLE_SCRIPT);
32
33 5
        if ($checker->isSuspicious($email)) {
34 1
            $this->error = new SpoofEmail();
35
        }
36
37 5
        return $this->error === null;
38
    }
39
40
    /**
41
     * @return InvalidEmail
42
     */
43
    public function getError() : ?InvalidEmail
44
    {
45
        return $this->error;
46
    }
47
48
    public function getWarnings() : array
49
    {
50
        return [];
51
    }
52
}
53