Class: URLValidation
- Inherits:
-
Validation
- Object
- Validation
- URLValidation
- Defined in:
- lib/json_patterns.rb
Constant Summary collapse
- @@url_regexp =
TODO: Replace this with a conjunction of RegexpValidations with customized errors?
Regexp::new("^" + # protocol identifier "(?:(?:https?|ftp)://)" + # user:pass authentication "(?:\\S+(?::\\S*)?@)?" + "(?:" + # IP address exclusion # private & local networks "(?!10(?:\\.\\d{1,3}){3})" + "(?!127(?:\\.\\d{1,3}){3})" + "(?!169\\.254(?:\\.\\d{1,3}){2})" + "(?!192\\.168(?:\\.\\d{1,3}){2})" + "(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" + # IP address dotted notation octets # excludes loopback network 0.0.0.0 # excludes reserved space >= 224.0.0.0 # excludes network & broadcast addresses # (first & last IP address of each class) "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + "|" + # host name "(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)" + # domain name "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*" + # TLD identifier "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" + ")" + # port number "(?::\\d{2,5})?" + # resource path "(?:/[^\\s]*)?" + "$", true )
Constants included from Inspectable
Instance Method Summary collapse
Methods inherited from Validation
#as_object_members, #expects_an_object?, memoized_new_from_pattern, new_from_pattern, #shallow_describe, #shallow_match?, #validate_from_root
Methods included from HashInitialized
Methods included from DeepEquality
Methods included from Inspectable
Instance Method Details
#to_s ⇒ Object
1086 1087 1088 |
# File 'lib/json_patterns.rb', line 1086 def to_s 'URL' end |
#validate(path, data) ⇒ Object
1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 |
# File 'lib/json_patterns.rb', line 1066 def validate(path, data) if data.is_a? String if data =~ @@url_regexp return [] else return [ValidationUnexpected.new( path: path, expected: "URL", found: data.inspect, )] end else return [ValidationUnexpected.new( path: path, expected: 'string', found: json_type_name(data), )] end end |