File tree 1 file changed +8
-7
lines changed
1 file changed +8
-7
lines changed Original file line number Diff line number Diff line change @@ -9,7 +9,8 @@ module Format
9
9
JSON_POINTER_REGEX = /\A #{ JSON_POINTER_REGEX_STRING } \z / . freeze
10
10
RELATIVE_JSON_POINTER_REGEX = /\A (0|[1-9]\d *)(#|#{ JSON_POINTER_REGEX_STRING } )?\z / . freeze
11
11
DATE_TIME_OFFSET_REGEX = /(Z|[\+ \- ]([01][0-9]|2[0-3]):[0-5][0-9])\z /i . freeze
12
- INVALID_QUERY_REGEX = /[[:space:]]/ . freeze
12
+ IP_REGEX = /\A [\h :.]+\z / . freeze
13
+ INVALID_QUERY_REGEX = /\s / . freeze
13
14
14
15
def valid_spec_format? ( data , format )
15
16
case format
@@ -28,9 +29,9 @@ def valid_spec_format?(data, format)
28
29
when 'idn-hostname'
29
30
valid_hostname? ( data )
30
31
when 'ipv4'
31
- valid_ip? ( data , :v4 )
32
+ valid_ip? ( data , Socket :: AF_INET )
32
33
when 'ipv6'
33
- valid_ip? ( data , :v6 )
34
+ valid_ip? ( data , Socket :: AF_INET6 )
34
35
when 'uri'
35
36
valid_uri? ( data )
36
37
when 'uri-reference'
@@ -72,10 +73,10 @@ def valid_hostname?(data)
72
73
HOSTNAME_REGEX . match? ( data ) && data . split ( '.' ) . all? { |label | label . size <= 63 }
73
74
end
74
75
75
- def valid_ip? ( data , type )
76
- ip_address = IPAddr . new ( data )
77
- type == :v4 ? ip_address . ipv4? : ip_address . ipv6?
78
- rescue IPAddr ::InvalidAddressError
76
+ def valid_ip? ( data , family )
77
+ IPAddr . new ( data , family )
78
+ IP_REGEX . match? ( data )
79
+ rescue IPAddr ::Error
79
80
false
80
81
end
81
82
You can’t perform that action at this time.
0 commit comments