uri_format_validator 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.codeclimate.yml +1 -1
- data/.editorconfig +1 -1
- data/.rubocop.yml +895 -903
- data/.travis.yml +1 -1
- data/CHANGELOG.adoc +8 -1
- data/README.adoc +15 -15
- data/bin/cucumber +18 -0
- data/gemfiles/common.gemfile +8 -5
- data/gemfiles/rails-4.0.gemfile +3 -2
- data/gemfiles/rails-4.1.gemfile +3 -2
- data/gemfiles/rails-4.2.gemfile +3 -2
- data/gemfiles/rails-5.0.gemfile +3 -2
- data/gemfiles/rails-5.1.gemfile +3 -2
- data/gemfiles/rails-head.gemfile +3 -2
- data/lib/uri_format_validator/validators.rb +1 -1
- data/lib/uri_format_validator/validators/helper_methods.rb +1 -1
- data/lib/uri_format_validator/validators/{uri_format_validator.rb → uri_validator.rb} +4 -7
- data/lib/uri_format_validator/version.rb +1 -1
- data/uri_format_validator.gemspec +3 -0
- metadata +46 -4
- data/examples/basic.rb +0 -5
data/.travis.yml
CHANGED
data/CHANGELOG.adoc
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
== Not released yet
|
2
2
|
|
3
|
-
==
|
3
|
+
== 0.2.0
|
4
|
+
|
5
|
+
* Drop support for Rubinius
|
6
|
+
* Rename validator from `uri_format` to `uri`
|
7
|
+
* Add first Cucumber + Aruba living documentation
|
8
|
+
* Switch to Addressable's URI parser
|
9
|
+
|
10
|
+
== 0.1.0
|
4
11
|
|
5
12
|
* Improve error message in English, add Polish translation
|
6
13
|
* First useful version
|
data/README.adoc
CHANGED
@@ -31,7 +31,7 @@ in your models, like that:
|
|
31
31
|
[source,ruby]
|
32
32
|
----
|
33
33
|
class User < ActiveRecord::Base
|
34
|
-
validates :home_site_url,
|
34
|
+
validates :home_site_url, uri: true
|
35
35
|
end
|
36
36
|
----
|
37
37
|
|
@@ -53,28 +53,28 @@ and fragment.
|
|
53
53
|
|
54
54
|
[source,ruby]
|
55
55
|
----
|
56
|
-
validates :home_site_url,
|
57
|
-
validates :home_site_url,
|
56
|
+
validates :home_site_url, uri: { scheme: /https?/ }
|
57
|
+
validates :home_site_url, uri: { scheme: %w[ssh telnet] }
|
58
58
|
|
59
|
-
validates :home_site_url,
|
60
|
-
validates :home_site_url,
|
59
|
+
validates :home_site_url, uri: { authority: /\.example\./ }
|
60
|
+
validates :home_site_url, uri: { authority: %w[example.com example.test] }
|
61
61
|
|
62
62
|
# require path component (`/` is not enough)
|
63
|
-
validates :home_site_url,
|
63
|
+
validates :home_site_url, uri: { path: true }
|
64
64
|
# disallow presence of path component
|
65
|
-
validates :home_site_url,
|
65
|
+
validates :home_site_url, uri: { path: false }
|
66
66
|
# match path against regular expression
|
67
|
-
validates :home_site_url,
|
67
|
+
validates :home_site_url, uri: { path: /regexp/ }
|
68
68
|
|
69
69
|
# require query component
|
70
|
-
validates :home_site_url,
|
70
|
+
validates :home_site_url, uri: { query: true }
|
71
71
|
# disallow presence of query component
|
72
|
-
validates :home_site_url,
|
72
|
+
validates :home_site_url, uri: { query: false }
|
73
73
|
|
74
74
|
# require fragment component
|
75
|
-
validates :home_site_url,
|
75
|
+
validates :home_site_url, uri: { fragment: true }
|
76
76
|
# disallow presence of fragment component
|
77
|
-
validates :home_site_url,
|
77
|
+
validates :home_site_url, uri: { fragment: false }
|
78
78
|
----
|
79
79
|
|
80
80
|
When `scheme` option is unspecified, only http and https are allowed.
|
@@ -86,7 +86,7 @@ to allow relative and disallow absolute URLs:
|
|
86
86
|
|
87
87
|
[source,ruby]
|
88
88
|
----
|
89
|
-
validates :home_site_url,
|
89
|
+
validates :home_site_url, uri: { authority: false }
|
90
90
|
----
|
91
91
|
|
92
92
|
=== Reachable URLs
|
@@ -97,7 +97,7 @@ with 2xx status code. Otherwise, given value is considered invalid.
|
|
97
97
|
|
98
98
|
[source,ruby]
|
99
99
|
----
|
100
|
-
validates :home_site_url,
|
100
|
+
validates :home_site_url, uri: { retrievable: true }
|
101
101
|
----
|
102
102
|
|
103
103
|
=== Error messages
|
@@ -106,7 +106,7 @@ You can also override the default error message:
|
|
106
106
|
|
107
107
|
[source,ruby]
|
108
108
|
----
|
109
|
-
validates :my_url_attribute,
|
109
|
+
validates :my_url_attribute, uri: true, message: 'is not a valid URL'
|
110
110
|
----
|
111
111
|
|
112
112
|
Alternatively, you can provide your own localization string for
|
data/bin/cucumber
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'cucumber' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
require "rubygems"
|
16
|
+
require "bundler/setup"
|
17
|
+
|
18
|
+
load Gem.bin_path("cucumber", "cucumber")
|
data/gemfiles/common.gemfile
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
-
source
|
1
|
+
source "https://rubygems.org"
|
2
2
|
|
3
|
-
gemspec path:
|
3
|
+
gemspec path: ".."
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
# These ones are specified here because we don't want them to be autorequired
|
6
|
+
# for some reasons. For instance, Rubocop won't work under Rubinius
|
7
|
+
# (dependencies do utilize refinements).
|
8
|
+
gem "codecov", require: false
|
9
|
+
gem "rubocop", require: false
|
10
|
+
gem "simplecov", require: false
|
data/gemfiles/rails-4.0.gemfile
CHANGED
data/gemfiles/rails-4.1.gemfile
CHANGED
data/gemfiles/rails-4.2.gemfile
CHANGED
data/gemfiles/rails-5.0.gemfile
CHANGED
data/gemfiles/rails-5.1.gemfile
CHANGED
data/gemfiles/rails-head.gemfile
CHANGED
@@ -12,7 +12,7 @@ module UriFormatValidator
|
|
12
12
|
# validates_uri_format_of :permalink
|
13
13
|
# end
|
14
14
|
def validates_uri_format_of(*attr_names)
|
15
|
-
validates_with
|
15
|
+
validates_with UriValidator, _merge_attributes(attr_names)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
|
4
4
|
require "active_model"
|
5
|
-
require "
|
5
|
+
require "addressable"
|
6
6
|
require "active_support/core_ext"
|
7
7
|
require "net/http"
|
8
8
|
require "resolv"
|
@@ -12,7 +12,7 @@ module UriFormatValidator
|
|
12
12
|
#
|
13
13
|
# TODO: documentation
|
14
14
|
#
|
15
|
-
class
|
15
|
+
class UriValidator < ::ActiveModel::EachValidator
|
16
16
|
SCHEMES = %w[
|
17
17
|
aaa aaas about acap acct cap cid coap coaps crid data dav dict dns
|
18
18
|
example file ftp geo go gopher h323 http https iax icap im imap info ipp
|
@@ -68,12 +68,9 @@ module UriFormatValidator
|
|
68
68
|
validate_against_options(uri, :path, :query, :fragment)
|
69
69
|
end
|
70
70
|
|
71
|
-
# Warning! The +URI+ method behaviour is inconsistent across VMs.
|
72
|
-
# For instance, Rubinius allows leading and trailing spaces. Non-nil
|
73
|
-
# return value doesn't guarantee that URI is indeed well-formed.
|
74
71
|
def string_to_uri(uri_string)
|
75
|
-
URI(uri_string)
|
76
|
-
rescue URI::InvalidURIError
|
72
|
+
Addressable::URI.parse(uri_string)
|
73
|
+
rescue Addressable::URI::InvalidURIError
|
77
74
|
nil
|
78
75
|
end
|
79
76
|
|
@@ -25,8 +25,11 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.required_ruby_version = ">= 2.2.2"
|
26
26
|
|
27
27
|
spec.add_runtime_dependency "activemodel", ">= 4.0.0", "< 6"
|
28
|
+
spec.add_runtime_dependency "addressable", "~> 2.5"
|
28
29
|
|
30
|
+
spec.add_development_dependency "aruba", "~> 0.14"
|
29
31
|
spec.add_development_dependency "bundler", "~> 1.14"
|
32
|
+
spec.add_development_dependency "cucumber", "~> 3.0"
|
30
33
|
spec.add_development_dependency "pry"
|
31
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
35
|
spec.add_development_dependency "rspec", "~> 3.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uri_format_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -30,6 +30,34 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '6'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: addressable
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.5'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.5'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: aruba
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.14'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.14'
|
33
61
|
- !ruby/object:Gem::Dependency
|
34
62
|
name: bundler
|
35
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,6 +72,20 @@ dependencies:
|
|
44
72
|
- - "~>"
|
45
73
|
- !ruby/object:Gem::Version
|
46
74
|
version: '1.14'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: cucumber
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.0'
|
47
89
|
- !ruby/object:Gem::Dependency
|
48
90
|
name: pry
|
49
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,11 +191,11 @@ files:
|
|
149
191
|
- ROADMAP.adoc
|
150
192
|
- Rakefile
|
151
193
|
- bin/console
|
194
|
+
- bin/cucumber
|
152
195
|
- bin/rake
|
153
196
|
- bin/rspec
|
154
197
|
- bin/rubocop
|
155
198
|
- bin/setup
|
156
|
-
- examples/basic.rb
|
157
199
|
- gemfiles/common.gemfile
|
158
200
|
- gemfiles/rails-4.0.gemfile
|
159
201
|
- gemfiles/rails-4.1.gemfile
|
@@ -168,7 +210,7 @@ files:
|
|
168
210
|
- lib/uri_format_validator/reacher.rb
|
169
211
|
- lib/uri_format_validator/validators.rb
|
170
212
|
- lib/uri_format_validator/validators/helper_methods.rb
|
171
|
-
- lib/uri_format_validator/validators/
|
213
|
+
- lib/uri_format_validator/validators/uri_validator.rb
|
172
214
|
- lib/uri_format_validator/version.rb
|
173
215
|
- uri_format_validator.gemspec
|
174
216
|
homepage: https://github.com/riboseinc/uri_format_validator
|
data/examples/basic.rb
DELETED