moca_rlibs 0.0.5 → 0.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18678bc1db494587ea1476c5c719f41911d55723caf5a3106a77eb24b0713aa6
4
- data.tar.gz: e0c9dbbb335aab1afc25b7d720afdf50badff88966eb30483d23874aa3c838e8
3
+ metadata.gz: 5b147078e15c0cb13012214d313ec93af268b85de8100dcfebae040faaa6cd99
4
+ data.tar.gz: d29bd7c7bef4f739e0db863f593091e47589ae3863644e285a3d8b65b59442c5
5
5
  SHA512:
6
- metadata.gz: efb1dea159fac373f90700da583cbe8ab27dbc9750a2adfbdb217fb8a2f0867b3108c53eeae655f4cf9ec2f4b82cb82a281d51d27305c0c60e425c560d9e9c79
7
- data.tar.gz: e693ee291cc2484515b51f66dcb37cae35ec084369c2f8e6d3f958023e2a60641b8b729c5012653eaa3e79501cfd089fe3a20198321c474826539bb73c02cad0
6
+ metadata.gz: a71797fc5bf75331985f97c18a1cb9f62761289ce279434412144d92599d4263f53626857afe7eb1aa1a00d9b2db94bd909e005b8b24f56fe452193b1cfa5e0c
7
+ data.tar.gz: 11f571d96e4a6faeaa0d3a4923ea30db99c970fe35d98f4154d06aab3c10c898defc283819383c72a125e6aa8cbfa0d68a517375f0407985b3bcf8ad3271c215
data/README.md CHANGED
@@ -66,8 +66,18 @@ class UserModel
66
66
  include ActiveModel::Validations
67
67
 
68
68
  validates :user_email, email: true
69
- validates :user_email, email: {mode: :strict, require_fqdn: true}
70
- validates :user_email, email: {domain: 'example.com'}
69
+ validates :user_email, email: { mode: :strict, require_fqdn: true }
70
+ validates :user_email, email: { domain: 'example.com' }
71
+ end
72
+ ```
73
+ IPアドレスのフォーマットをチェックする
74
+ ```ruby
75
+ class UserModel
76
+ include ActiveModel::Validations
77
+
78
+ validates :last_login_ip, ip: true
79
+ validates :last_login_ip, ip: { version: :v4 }
80
+ validates :last_login_ip, ip: { version: :v6 }
71
81
  end
72
82
  ```
73
83
 
@@ -171,6 +181,15 @@ params do
171
181
  requires :text, type: String, only_printable: true
172
182
  end
173
183
  ```
184
+ IPアドレスのフォーマットをチェックする
185
+ ```ruby
186
+ params do
187
+ optional :ip, type: String, ip_address: true
188
+ optional :ipv4, type: String, ip_address: :v4
189
+ optional :ipv6, type: String, ip_address: :v6
190
+ end
191
+ ```
192
+
174
193
  ## Slack通知送信用クラス
175
194
  ```ruby
176
195
  # インスタンス化
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_model'
4
+ require 'active_support/all'
5
+ require 'resolv'
6
+
7
+ module ActiveModel::Validations
8
+ # IPアドレスのフォーマットをチェックする
9
+ class IpValidator < ::ActiveModel::EachValidator
10
+ PERMITTED_VERSION = %i[v4 v6].freeze
11
+
12
+ def initialize(options)
13
+ options[:version] ||= %i[v4 v6]
14
+ options[:version] = Array(options[:version])
15
+ super
16
+ end
17
+
18
+ def validate_each(record, attribute, value)
19
+ return if value.blank?
20
+
21
+ value = value.presence.to_s
22
+ return if options[:version].include?(:v4) && ::Resolv::IPv4::Regex.match?(value)
23
+ return if options[:version].include?(:v6) && ::Resolv::IPv6::Regex.match?(value)
24
+
25
+ record.errors[attribute] << 'invalid ip format'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/all'
4
+ require 'grape'
5
+ require 'resolv'
6
+
7
+ module MocaRlibs::GrapeValidators
8
+ # 数値の最小値をチェック
9
+ class IpAddress < Grape::Validations::Base
10
+ def validate_param!(attr_name, params)
11
+ return if !@required && params[attr_name].blank?
12
+
13
+ version = @option.instance_of?(Proc) ? @option.call(params) : @option
14
+ value = params[attr_name].presence.to_s
15
+ return if validate_ip(version, value)
16
+
17
+ message = "invalid ip format: #{value}"
18
+ raise Grape::Exceptions::Validation.new(params: [@scope.full_name(attr_name)], message: message)
19
+ end
20
+
21
+ private
22
+
23
+ def validate_ip(version, value)
24
+ case version
25
+ when :v4
26
+ return true if ::Resolv::IPv4::Regex.match?(value)
27
+ when :v6
28
+ return true if ::Resolv::IPv6::Regex.match?(value)
29
+ else
30
+ return true if ::Resolv::IPv4::Regex.match?(value)
31
+ return true if ::Resolv::IPv6::Regex.match?(value)
32
+ end
33
+ false
34
+ end
35
+ end
36
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MocaRlibs
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.6'
5
5
  end
data/lib/moca_rlibs.rb CHANGED
@@ -19,6 +19,7 @@ require_relative 'moca_rlibs/grape_validators/only_numbers'
19
19
  require_relative 'moca_rlibs/grape_validators/only_alpha'
20
20
  require_relative 'moca_rlibs/grape_validators/only_alpha_numeric'
21
21
  require_relative 'moca_rlibs/grape_validators/only_printable'
22
+ require_relative 'moca_rlibs/grape_validators/ip_address'
22
23
  require_relative 'moca_rlibs/grape_errors/bad_gateway'
23
24
  require_relative 'moca_rlibs/grape_errors/bad_request'
24
25
  require_relative 'moca_rlibs/grape_errors/conflict'
@@ -36,6 +37,7 @@ require_relative 'moca_rlibs/active_model_validators/only_alpha_numeric'
36
37
  require_relative 'moca_rlibs/active_model_validators/only_ascii'
37
38
  require_relative 'moca_rlibs/active_model_validators/only_numbers'
38
39
  require_relative 'moca_rlibs/active_model_validators/only_printable'
40
+ require_relative 'moca_rlibs/active_model_validators/ip'
39
41
 
40
42
  require 'active_model'
41
43
  require 'email_validator'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moca_rlibs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - mocaberos
@@ -277,6 +277,7 @@ files:
277
277
  - buildspec.yml
278
278
  - docker/scripts/test.sh
279
279
  - lib/moca_rlibs.rb
280
+ - lib/moca_rlibs/active_model_validators/ip.rb
280
281
  - lib/moca_rlibs/active_model_validators/only_alpha.rb
281
282
  - lib/moca_rlibs/active_model_validators/only_alpha_numeric.rb
282
283
  - lib/moca_rlibs/active_model_validators/only_ascii.rb
@@ -300,6 +301,7 @@ files:
300
301
  - lib/moca_rlibs/grape_validators/email_rfc.rb
301
302
  - lib/moca_rlibs/grape_validators/email_strict.rb
302
303
  - lib/moca_rlibs/grape_validators/ends_with.rb
304
+ - lib/moca_rlibs/grape_validators/ip_address.rb
303
305
  - lib/moca_rlibs/grape_validators/length.rb
304
306
  - lib/moca_rlibs/grape_validators/max.rb
305
307
  - lib/moca_rlibs/grape_validators/min.rb