Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
4 / 4
Ip
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
4 / 4
 check
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
4 / 4
1<?php
2
3namespace Qmp\Laravel\ValidationRules\Rules;
4
5
6class Ip extends Rule
7{
8    /**
9     * Undocumented variable
10     *
11     * @var string
12     */
13    protected $message = 'The :attribute must be a valid public IP address';
14
15    /**
16     * Undocumented variable
17     *
18     * @var array
19     */
20    protected $ipv4 = [FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE];
21
22    /**
23     * Undocumented variable
24     *
25     * @var array
26     */
27    protected $ipv6 = [FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE];
28
29    /**
30     * Undocumented function
31     *
32     * @param string $attribute
33     * @param mixed $value
34     * @param array $parameters
35     * @return bool
36     */
37    public function check(string $attribute, $value, array $parameters): bool
38    {
39        $value = explode('::', $value);
40        $value = count($value) > 1 ? $value[0] . '::' : $value[0];
41
42        return filter_var(trim($value), ...$this->ipv4)
43            || filter_var(trim($value), ...$this->ipv6);
44    }
45}