weak_parameters 0.1.1 → 0.1.2
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/lib/weak_parameters/base_validator.rb +20 -4
- data/lib/weak_parameters/controller.rb +1 -1
- data/lib/weak_parameters/validator.rb +11 -11
- data/lib/weak_parameters/version.rb +1 -1
- data/spec/dummy/app/controllers/recipes_controller.rb +7 -0
- data/spec/requests/recipes_spec.rb +11 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26e7c722507f3503ec86ccf9125412e4ffa92d80
|
4
|
+
data.tar.gz: 2d12877fdf00a549ef15a33c3586d14b88dcc71e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 618f2b0a8f715c18636238b4e279a0cef462098313a2b5fac7fda66aa6c54df3d292a67b75c4c76e8f98af7bb10cf105f14204cc02791f3f3af1c18e0063617e
|
7
|
+
data.tar.gz: 551e7ebf28056014418d229c41a9ac10b285fe8e30bc356a08b9f1b2a42f7336539f0672f3b440d2d08f09cd70796bd650162317cc2b8eb6abc7761bb0a93a86
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module WeakParameters
|
2
2
|
class BaseValidator
|
3
|
-
attr_reader :
|
3
|
+
attr_reader :controller, :key, :options, :block
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(controller, key, options = {}, &block)
|
6
|
+
@controller = controller
|
7
7
|
@key = key
|
8
8
|
@options = options
|
9
9
|
@block = block
|
10
10
|
end
|
11
11
|
|
12
12
|
def validate
|
13
|
-
|
13
|
+
handle_failure unless valid?
|
14
14
|
end
|
15
15
|
|
16
16
|
def required?
|
@@ -57,10 +57,22 @@ module WeakParameters
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
+
def params
|
61
|
+
controller.params
|
62
|
+
end
|
63
|
+
|
60
64
|
def value
|
61
65
|
params[key]
|
62
66
|
end
|
63
67
|
|
68
|
+
def handle_failure
|
69
|
+
if has_handler?
|
70
|
+
controller.send(options[:handler])
|
71
|
+
else
|
72
|
+
raise_error
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
64
76
|
def raise_error
|
65
77
|
raise WeakParameters::ValidationError, error_message
|
66
78
|
end
|
@@ -76,5 +88,9 @@ module WeakParameters
|
|
76
88
|
def invalid_type?
|
77
89
|
!valid_type?
|
78
90
|
end
|
91
|
+
|
92
|
+
def has_handler?
|
93
|
+
!!options[:handler]
|
94
|
+
end
|
79
95
|
end
|
80
96
|
end
|
@@ -2,7 +2,7 @@ module WeakParameters
|
|
2
2
|
module Controller
|
3
3
|
def validates(action_name, &block)
|
4
4
|
before_filter only: action_name do
|
5
|
-
validator = WeakParameters::Validator.new(
|
5
|
+
validator = WeakParameters::Validator.new(self, &block)
|
6
6
|
WeakParameters.stats[params[:controller]][params[:action]] = validator
|
7
7
|
WeakParameters.stats[params[:controller]][params[:action]].validate
|
8
8
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module WeakParameters
|
2
2
|
class Validator
|
3
|
-
attr_reader :block, :
|
3
|
+
attr_reader :block, :controller
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@
|
5
|
+
def initialize(controller, &block)
|
6
|
+
@controller = controller
|
7
7
|
instance_eval(&block)
|
8
8
|
end
|
9
9
|
|
@@ -18,31 +18,31 @@ module WeakParameters
|
|
18
18
|
private
|
19
19
|
|
20
20
|
def any(key, options = {}, &block)
|
21
|
-
validators << WeakParameters::AnyValidator.new(
|
21
|
+
validators << WeakParameters::AnyValidator.new(controller, key, options, &block)
|
22
22
|
end
|
23
23
|
|
24
24
|
def string(key, options = {}, &block)
|
25
|
-
validators << WeakParameters::StringValidator.new(
|
25
|
+
validators << WeakParameters::StringValidator.new(controller, key, options, &block)
|
26
26
|
end
|
27
27
|
|
28
28
|
def integer(key, options = {}, &block)
|
29
|
-
validators << WeakParameters::IntegerValidator.new(
|
29
|
+
validators << WeakParameters::IntegerValidator.new(controller, key, options, &block)
|
30
30
|
end
|
31
31
|
|
32
32
|
def boolean(key, options = {}, &block)
|
33
|
-
validators << WeakParameters::BooleanValidator.new(
|
33
|
+
validators << WeakParameters::BooleanValidator.new(controller, key, options, &block)
|
34
34
|
end
|
35
35
|
|
36
36
|
def hash(key, options = {}, &block)
|
37
|
-
validators << WeakParameters::HashValidator.new(
|
37
|
+
validators << WeakParameters::HashValidator.new(controller, key, options, &block)
|
38
38
|
end
|
39
39
|
|
40
40
|
def array(key, options = {}, &block)
|
41
|
-
validators << WeakParameters::ArrayValidator.new(
|
41
|
+
validators << WeakParameters::ArrayValidator.new(controller, key, options, &block)
|
42
42
|
end
|
43
43
|
|
44
|
-
def float(key, options = {})
|
45
|
-
validators << WeakParameters::FloatValidator.new(
|
44
|
+
def float(key, options = {}, &block)
|
45
|
+
validators << WeakParameters::FloatValidator.new(controller, key, options, &block)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -8,6 +8,7 @@ class RecipesController < ApplicationController
|
|
8
8
|
hash :config
|
9
9
|
array :tags
|
10
10
|
float :rate
|
11
|
+
integer :custom, only: 0..1, handler: :render_error
|
11
12
|
string :zip_code do |value|
|
12
13
|
value =~ /\A\d{3}-\d{4}\z/
|
13
14
|
end
|
@@ -16,4 +17,10 @@ class RecipesController < ApplicationController
|
|
16
17
|
def create
|
17
18
|
head 201
|
18
19
|
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def render_error
|
24
|
+
head 403
|
25
|
+
end
|
19
26
|
end
|
@@ -11,6 +11,7 @@ describe "Recipes" do
|
|
11
11
|
config: {},
|
12
12
|
tags: [],
|
13
13
|
zip_code: "123-4567",
|
14
|
+
custom: 0,
|
14
15
|
}
|
15
16
|
end
|
16
17
|
|
@@ -116,5 +117,15 @@ describe "Recipes" do
|
|
116
117
|
context "with valid condition", :autodoc do
|
117
118
|
include_examples "201"
|
118
119
|
end
|
120
|
+
|
121
|
+
context "with custom handler option" do
|
122
|
+
before do
|
123
|
+
params[:custom] = "invalid"
|
124
|
+
end
|
125
|
+
it "delegates to specified method" do
|
126
|
+
post "/recipes", params
|
127
|
+
response.status.should == 403
|
128
|
+
end
|
129
|
+
end
|
119
130
|
end
|
120
131
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weak_parameters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -191,3 +191,4 @@ test_files:
|
|
191
191
|
- spec/dummy/script/rails
|
192
192
|
- spec/requests/recipes_spec.rb
|
193
193
|
- spec/spec_helper.rb
|
194
|
+
has_rdoc:
|