sinatra-param 1.1.1 → 1.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/Gemfile.lock +1 -1
- data/lib/sinatra/param/version.rb +1 -1
- data/lib/sinatra/param.rb +16 -12
- data/sinatra-param-1.1.1.gem +0 -0
- data/spec/parameter_type_coercion_spec.rb +35 -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: ed6bc853522acf081f09e12f5c27bdaba38100c9
|
4
|
+
data.tar.gz: 319a7c7ef04009d6f709a9faf9209623d831f93f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13ba305e660dec0f8173b474a1ae79e19d570fe977594d91878dacdccb003a636d39abe641aa4911c860fad866908af5cada37bad9da0ce8083dbd8ad858ab88
|
7
|
+
data.tar.gz: 6dc4d1d351e0261bacd12d2dc5873b82b04f105d3c2e25a64d280c6fb932da41c131bb9ccece3c0cd218caddaa4a1329051c292d7d3bbf2b9ae8c9dbcd93d1e9
|
data/Gemfile.lock
CHANGED
data/lib/sinatra/param.rb
CHANGED
@@ -56,18 +56,22 @@ module Sinatra
|
|
56
56
|
private
|
57
57
|
|
58
58
|
def coerce(param, type, options = {})
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
59
|
+
begin
|
60
|
+
return nil if param.nil?
|
61
|
+
return param if (param.is_a?(type) rescue false)
|
62
|
+
return Integer(param) if type == Integer
|
63
|
+
return Float(param) if type == Float
|
64
|
+
return String(param) if type == String
|
65
|
+
return Time.parse(param) if type == Time
|
66
|
+
return Date.parse(param) if type == Date
|
67
|
+
return DateTime.parse(param) if type == DateTime
|
68
|
+
return Array(param.split(options[:delimiter] || ",")) if type == Array
|
69
|
+
return Hash[param.split(options[:delimiter] || ",").map{|c| c.split(options[:separator] || ":")}] if type == Hash
|
70
|
+
return (/(false|f|no|n|0)$/i === param.to_s ? false : (/(true|t|yes|y|1)$/i === param.to_s ? true : nil)) if type == TrueClass || type == FalseClass || type == Boolean
|
71
|
+
return nil
|
72
|
+
rescue ArgumentError
|
73
|
+
raise InvalidParameterError, "'#{param}' is not a valid #{type}"
|
74
|
+
end
|
71
75
|
end
|
72
76
|
|
73
77
|
def validate!(param, options)
|
Binary file
|
@@ -17,6 +17,13 @@ describe 'Parameter Types' do
|
|
17
17
|
JSON.parse(response.body)['arg'].should eq(1234)
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
it 'returns 400 on requests when integer is invalid' do
|
22
|
+
get('/coerce/integer', arg: '123abc') do |response|
|
23
|
+
response.status.should == 400
|
24
|
+
JSON.parse(response.body)['message'].should eq('Invalid Parameter: arg')
|
25
|
+
end
|
26
|
+
end
|
20
27
|
end
|
21
28
|
|
22
29
|
describe 'Float' do
|
@@ -26,6 +33,13 @@ describe 'Parameter Types' do
|
|
26
33
|
JSON.parse(response.body)['arg'].should eq(1234.0)
|
27
34
|
end
|
28
35
|
end
|
36
|
+
|
37
|
+
it 'returns 400 on requests when float is invalid' do
|
38
|
+
get('/coerce/float', arg: '123abc') do |response|
|
39
|
+
response.status.should == 400
|
40
|
+
JSON.parse(response.body)['message'].should eq('Invalid Parameter: arg')
|
41
|
+
end
|
42
|
+
end
|
29
43
|
end
|
30
44
|
|
31
45
|
describe 'Time' do
|
@@ -35,6 +49,13 @@ describe 'Parameter Types' do
|
|
35
49
|
JSON.parse(response.body)['arg'].should match(/2013-01-17 00:00:00/)
|
36
50
|
end
|
37
51
|
end
|
52
|
+
|
53
|
+
it 'returns 400 on requests when time is invalid' do
|
54
|
+
get('/coerce/time', arg: '123abc') do |response|
|
55
|
+
response.status.should == 400
|
56
|
+
JSON.parse(response.body)['message'].should eq('Invalid Parameter: arg')
|
57
|
+
end
|
58
|
+
end
|
38
59
|
end
|
39
60
|
|
40
61
|
describe 'Date' do
|
@@ -44,6 +65,13 @@ describe 'Parameter Types' do
|
|
44
65
|
JSON.parse(response.body)['arg'].should eq('2013-01-17')
|
45
66
|
end
|
46
67
|
end
|
68
|
+
|
69
|
+
it 'returns 400 on requests when date is invalid' do
|
70
|
+
get('/coerce/date', arg: 'abc') do |response|
|
71
|
+
response.status.should == 400
|
72
|
+
JSON.parse(response.body)['message'].should eq('Invalid Parameter: arg')
|
73
|
+
end
|
74
|
+
end
|
47
75
|
end
|
48
76
|
|
49
77
|
describe 'DateTime' do
|
@@ -53,6 +81,13 @@ describe 'Parameter Types' do
|
|
53
81
|
JSON.parse(response.body)['arg'].should eq('2013-01-17T00:00:00+00:00')
|
54
82
|
end
|
55
83
|
end
|
84
|
+
|
85
|
+
it 'returns 400 on requests when datetime is invalid' do
|
86
|
+
get('/coerce/datetime', arg: 'abc') do |response|
|
87
|
+
response.status.should == 400
|
88
|
+
JSON.parse(response.body)['message'].should eq('Invalid Parameter: arg')
|
89
|
+
end
|
90
|
+
end
|
56
91
|
end
|
57
92
|
|
58
93
|
describe 'Array' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-param
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mattt Thompson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -141,6 +141,7 @@ files:
|
|
141
141
|
- ./Rakefile
|
142
142
|
- ./README.md
|
143
143
|
- ./sinatra-param-1.1.0.gem
|
144
|
+
- ./sinatra-param-1.1.1.gem
|
144
145
|
- ./sinatra-param.gemspec
|
145
146
|
- spec/dummy/app.rb
|
146
147
|
- spec/parameter_sets_spec.rb
|