Code Duplication    Length = 38-39 lines in 2 locations

src/Constraints/MaxLength.php 1 location

@@ 10-48 (lines=39) @@
7
use League\JsonGuard\ValidationError;
8
use League\JsonGuard\Validator;
9
10
class MaxLength implements Constraint
11
{
12
    const KEYWORD = 'maxLength';
13
14
    /**
15
     * @var string
16
     */
17
    private $charset;
18
19
    /**
20
     * @param string $charset
21
     */
22
    public function __construct($charset = 'UTF-8')
23
    {
24
        $this->charset = $charset;
25
    }
26
27
28
    /**
29
     * {@inheritdoc}
30
     */
31
    public function validate($value, $parameter, Validator $validator)
32
    {
33
        Assert::type($parameter, 'number', self::KEYWORD, $validator->getPointer());
34
        Assert::nonNegative($parameter, self::KEYWORD, $validator->getPointer());
35
36
        if (!is_string($value) || JsonGuard\strlen($value, $this->charset) <= $parameter) {
37
            return null;
38
        }
39
40
        return new ValidationError(
41
            'String is not at most {max_length} characters long',
42
            self::KEYWORD,
43
            $value,
44
            $validator->getPointer(),
45
            ['max_length' => $parameter]
46
        );
47
    }
48
}
49

src/Constraints/MinLength.php 1 location

@@ 10-47 (lines=38) @@
7
use League\JsonGuard\ValidationError;
8
use League\JsonGuard\Validator;
9
10
class MinLength implements Constraint
11
{
12
    const KEYWORD = 'minLength';
13
14
    /**
15
     * @var string
16
     */
17
    private $charset;
18
19
    /**
20
     * @param string $charset
21
     */
22
    public function __construct($charset = 'UTF-8')
23
    {
24
        $this->charset = $charset;
25
    }
26
27
    /**
28
     * {@inheritdoc}
29
     */
30
    public function validate($value, $parameter, Validator $validator)
31
    {
32
        Assert::type($parameter, 'number', self::KEYWORD, $validator->getPointer());
33
        Assert::nonNegative($parameter, self::KEYWORD, $validator->getPointer());
34
35
        if (!is_string($value) || JsonGuard\strlen($value, $this->charset) >= $parameter) {
36
            return null;
37
        }
38
39
        return new ValidationError(
40
            'String is not at least {min_length} characters long',
41
            self::KEYWORD,
42
            $value,
43
            $validator->getPointer(),
44
            ['min_length' => $parameter]
45
        );
46
    }
47
}
48