validate_uri 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/locale/en.yml +4 -0
  3. data/lib/validate_url.rb +48 -0
  4. metadata +147 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d656be3b3d4cac3e17f026168b03991d39b03a16
4
+ data.tar.gz: e47ce7ae9b3abc342a00e21d82715d0470b063f5
5
+ SHA512:
6
+ metadata.gz: 5e303739a9def5ec4d715bf26907a85e1d19ec6ad7f7ee957ee5c2a704b966afaec14a573ff42f07a8acff151feea70b3e5e4b5842dee00dc8bec3292565286d
7
+ data.tar.gz: c928e42e5255c0bbab1032057d9b03e5953a82d986f55cac9c5f9559d7bfdacf0e92cb7a8f656de5c33060b09289514504f0429643786691c4864ae91c62a4f7
@@ -0,0 +1,4 @@
1
+ en:
2
+ errors:
3
+ messages:
4
+ url: is not a valid URL
@@ -0,0 +1,48 @@
1
+ require 'active_model'
2
+ require 'active_support/i18n'
3
+ I18n.load_path << File.dirname(__FILE__) + '/locale/en.yml'
4
+
5
+ module ActiveModel
6
+ module Validations
7
+ class UrlValidator < ActiveModel::EachValidator
8
+
9
+ def initialize(options)
10
+ options.reverse_merge!(:schemes => %w(http https))
11
+ options.reverse_merge!(:message => :url)
12
+ super(options)
13
+ end
14
+
15
+ def validate_each(record, attribute, value)
16
+ schemes = [*options.fetch(:schemes)].map(&:to_s)
17
+ begin
18
+ uri = URI.parse(value)
19
+ unless uri && schemes.include?(uri.scheme)
20
+ record.errors.add(attribute, options.fetch(:message), :value => value)
21
+ end
22
+ rescue URI::InvalidURIError
23
+ record.errors.add(attribute, options.fetch(:message), :value => value)
24
+ end
25
+ end
26
+ end
27
+
28
+ module ClassMethods
29
+ # Validates whether the value of the specified attribute is valid url.
30
+ #
31
+ # class Unicorn
32
+ # include ActiveModel::Validations
33
+ # attr_accessor :homepage, :ftpsite
34
+ # validates_url :homepage, :allow_blank => true
35
+ # validates_url :ftpsite, :schemes => ['ftp']
36
+ # end
37
+ # Configuration options:
38
+ # * <tt>:message</tt> - A custom error message (default is: "is not a valid URL").
39
+ # * <tt>:allow_nil</tt> - If set to true, skips this validation if the attribute is +nil+ (default is +false+).
40
+ # * <tt>:allow_blank</tt> - If set to true, skips this validation if the attribute is blank (default is +false+).
41
+ # * <tt>:schemes</tt> - Array of URI schemes to validate against. (default is +['http', 'https']+)
42
+
43
+ def validates_url(*attr_names)
44
+ validates_with UrlValidator, _merge_attributes(attr_names)
45
+ end
46
+ end
47
+ end
48
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: validate_uri
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Michal Cichra
8
+ - Tanel Suurhans
9
+ - Tarmo Lehtpuu
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-09-01 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activemodel
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 3.0.0
29
+ - !ruby/object:Gem::Dependency
30
+ name: addressable
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: diff-lcs
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: 1.1.2
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: 1.1.2
71
+ - !ruby/object:Gem::Dependency
72
+ name: sqlite3
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: activerecord
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rake
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ description: Library for validating urls in Rails.
114
+ email:
115
+ - michal.cichra@gmail.com
116
+ - tanel.suurhans@perfectline.ee
117
+ - tarmo.lehtpuu@perfectline.ee
118
+ executables: []
119
+ extensions: []
120
+ extra_rdoc_files: []
121
+ files:
122
+ - lib/locale/en.yml
123
+ - lib/validate_url.rb
124
+ homepage: http://github.com/mikz/validates_uri
125
+ licenses: []
126
+ metadata: {}
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ requirements: []
142
+ rubyforge_project:
143
+ rubygems_version: 2.2.2
144
+ signing_key:
145
+ specification_version: 4
146
+ summary: Library for validating urls in Rails.
147
+ test_files: []