sinatra-filtering_parameters 0.1.0
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.
- data/.document +4 -0
- data/.gitignore +3 -0
- data/.rspec +1 -0
- data/LICENSE.txt +20 -0
- data/README.md +49 -0
- data/Rakefile +41 -0
- data/lib/sinatra/filtering_parameters/version.rb +6 -0
- data/lib/sinatra/filtering_parameters.rb +72 -0
- data/sinatra-filtering_parameters.gemspec +28 -0
- data/spec/nested_parameters_spec.rb +203 -0
- data/spec/permitted_parameters_spec.rb +66 -0
- data/spec/spec_helper.rb +18 -0
- metadata +173 -0
data/.document
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour --format documentation
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Takeshi Yabe
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Sinatra Filtering Parameters
|
2
|
+
|
3
|
+
- [Homepage](https://github.com/tyabe/sinatra-filtering_parameters#readme)
|
4
|
+
- [Issues](https://github.com/tyabe/sinatra-filtering_parameters/issues)
|
5
|
+
- [Documentation](http://rubydoc.info/gems/sinatra-filtering_parameters/frames)
|
6
|
+
- [Email](mailto:tyabe at nilidea.com)
|
7
|
+
- [Twitter](http://twitter.com/tyabe)
|
8
|
+
|
9
|
+
## Description
|
10
|
+
|
11
|
+
This plugin add parameter whitelisting to a Sinatra application.
|
12
|
+
|
13
|
+
## Examples
|
14
|
+
|
15
|
+
``` ruby
|
16
|
+
require 'sinatra/filtering_parameters'
|
17
|
+
class App < Sinatra::Base
|
18
|
+
register Sinatra::FilteringParameters
|
19
|
+
|
20
|
+
post '/create', :allow => [ :title, :body ] do
|
21
|
+
@post = Post.new(params)
|
22
|
+
# ...
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
## Install
|
27
|
+
|
28
|
+
with RubyGems:
|
29
|
+
|
30
|
+
```
|
31
|
+
$ gem install sinatra-filtering_parameters
|
32
|
+
|
33
|
+
```
|
34
|
+
if using Bundler, add to your Gemfile:
|
35
|
+
|
36
|
+
```
|
37
|
+
gem "sinatra-filtering_parameters"
|
38
|
+
```
|
39
|
+
and run
|
40
|
+
|
41
|
+
```
|
42
|
+
$ bundle install
|
43
|
+
```
|
44
|
+
|
45
|
+
## Copyright
|
46
|
+
|
47
|
+
Copyright (c) 2012 Takeshi Yabe
|
48
|
+
See LICENSE.txt for details.
|
49
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rake'
|
5
|
+
|
6
|
+
begin
|
7
|
+
gem 'rubygems-tasks', '~> 0.2'
|
8
|
+
require 'rubygems/tasks'
|
9
|
+
|
10
|
+
Gem::Tasks.new
|
11
|
+
rescue LoadError => e
|
12
|
+
warn e.message
|
13
|
+
warn "Run `gem install rubygems-tasks` to install Gem::Tasks."
|
14
|
+
end
|
15
|
+
|
16
|
+
begin
|
17
|
+
gem 'rdoc', '~> 3.0'
|
18
|
+
require 'rdoc/task'
|
19
|
+
|
20
|
+
RDoc::Task.new do |rdoc|
|
21
|
+
rdoc.title = "sinatra-filtering_parameters"
|
22
|
+
end
|
23
|
+
rescue LoadError => e
|
24
|
+
warn e.message
|
25
|
+
warn "Run `gem install rdoc` to install 'rdoc/task'."
|
26
|
+
end
|
27
|
+
task :doc => :rdoc
|
28
|
+
|
29
|
+
begin
|
30
|
+
gem 'rspec', '~> 2.4'
|
31
|
+
require 'rspec/core/rake_task'
|
32
|
+
|
33
|
+
RSpec::Core::RakeTask.new
|
34
|
+
rescue LoadError => e
|
35
|
+
task :spec do
|
36
|
+
abort "Please run `gem install rspec` to install RSpec."
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
task :test => :spec
|
41
|
+
task :default => :spec
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'sinatra/filtering_parameters/version'
|
2
|
+
|
3
|
+
module Sinatra
|
4
|
+
module FilteringParameters
|
5
|
+
class << self
|
6
|
+
def registered(app)
|
7
|
+
app.set(:allow) do |*filters|
|
8
|
+
condition do
|
9
|
+
_params = params.dup
|
10
|
+
params.clear
|
11
|
+
%w[ splat captures ].each do |name|
|
12
|
+
params[name] = _params.delete(name) if _params.include?(name)
|
13
|
+
end
|
14
|
+
hoge = Sinatra::FilteringParameters.allow(_params, filters)
|
15
|
+
params.merge! hoge
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def allow(params, filters)
|
21
|
+
allow_params = {}
|
22
|
+
_filters = [filters].flatten
|
23
|
+
[filters].flatten.each do |filter|
|
24
|
+
_filters.shift
|
25
|
+
case filter
|
26
|
+
when Symbol, String
|
27
|
+
filter = filter.to_s
|
28
|
+
next unless params.is_a?(Hash)
|
29
|
+
|
30
|
+
if params.has_key?(filter)
|
31
|
+
if params[filter].is_a?(Hash)
|
32
|
+
allow_param = allow(params[filter], _filters)
|
33
|
+
allow_params[filter] = allow_param unless allow_param.empty?
|
34
|
+
else
|
35
|
+
allow_params[filter] = params[filter]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
when Hash
|
39
|
+
_params = {}
|
40
|
+
filter.keys.map(&:to_s).each { |k| _params[k] = params[k] if params.has_key?(k) }
|
41
|
+
_params.each do |key, value|
|
42
|
+
case value
|
43
|
+
when Array
|
44
|
+
[value].flatten.each do |v|
|
45
|
+
allow_param = allow(v, filter.values)
|
46
|
+
unless allow_param.empty?
|
47
|
+
allow_params[key] ||= []
|
48
|
+
allow_params[key] << allow_param
|
49
|
+
end
|
50
|
+
end
|
51
|
+
else
|
52
|
+
if value.keys.all? { |k| k =~ /\A-?\d+\z/ }
|
53
|
+
value.each do |k, v|
|
54
|
+
allow_param = allow(v, filter.values)
|
55
|
+
unless allow_param.empty?
|
56
|
+
allow_params[key] ||= {}
|
57
|
+
allow_params[key][k] = allow_param
|
58
|
+
end
|
59
|
+
end
|
60
|
+
else
|
61
|
+
allow_param = allow(value, filter.values)
|
62
|
+
allow_params[key] = allow_param unless allow_param.empty?
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
allow_params
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.expand_path('../lib/sinatra/filtering_parameters/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "sinatra-filtering_parameters"
|
7
|
+
gem.version = Sinatra::FilteringParameters::VERSION
|
8
|
+
gem.summary = "Filtering allowed parameters for Sinatra"
|
9
|
+
gem.description = "This adds filter to use only those parameters that are allowed to a Sinatra application."
|
10
|
+
gem.license = "MIT"
|
11
|
+
gem.authors = ["Takeshi Yabe"]
|
12
|
+
gem.email = "tyabe@nilidea.com"
|
13
|
+
gem.homepage = "https://github.com/tyabe/sinatra-filtering_parameters#readme"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ['lib']
|
19
|
+
|
20
|
+
gem.add_dependency "sinatra", "~> 1.3"
|
21
|
+
|
22
|
+
gem.add_development_dependency "rdoc", "~> 3.0"
|
23
|
+
gem.add_development_dependency "rake", "~> 0.9.2"
|
24
|
+
gem.add_development_dependency "rspec", "~> 2.4"
|
25
|
+
gem.add_development_dependency "rubygems-tasks", "~> 0.2"
|
26
|
+
gem.add_development_dependency "rack-test"
|
27
|
+
gem.add_development_dependency "sinatra-contrib"
|
28
|
+
end
|
@@ -0,0 +1,203 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sinatra::FilteringParameters do
|
4
|
+
|
5
|
+
def post_with_filter(args)
|
6
|
+
mock_app do
|
7
|
+
register Sinatra::FilteringParameters
|
8
|
+
post('/', allow: args[:allow]){ params.to_json }
|
9
|
+
end
|
10
|
+
post '/', args[:pass_params]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "permitted nested parameters" do
|
14
|
+
post_with_filter(
|
15
|
+
:pass_params => {
|
16
|
+
:book => {
|
17
|
+
:title => "Romeo and Juliet",
|
18
|
+
:authors => [{
|
19
|
+
:name => "William Shakespeare",
|
20
|
+
:born => "1564-04-26"
|
21
|
+
}, {
|
22
|
+
:name => "Christopher Marlowe"
|
23
|
+
}],
|
24
|
+
:details => {
|
25
|
+
:pages => 200,
|
26
|
+
:genre => "Tragedy"
|
27
|
+
}
|
28
|
+
},
|
29
|
+
:magazine => "Mjallo!"
|
30
|
+
},
|
31
|
+
:allow => [
|
32
|
+
:book => [
|
33
|
+
:title,
|
34
|
+
:authors => :name,
|
35
|
+
:details => :pages
|
36
|
+
]
|
37
|
+
]
|
38
|
+
)
|
39
|
+
result_should_be_equal({
|
40
|
+
"book" => {
|
41
|
+
"title" => "Romeo and Juliet",
|
42
|
+
"authors" => [{
|
43
|
+
"name" => "William Shakespeare"
|
44
|
+
},{
|
45
|
+
"name" => "Christopher Marlowe"
|
46
|
+
}],
|
47
|
+
"details" => {
|
48
|
+
"pages" => "200"
|
49
|
+
}
|
50
|
+
}
|
51
|
+
})
|
52
|
+
end
|
53
|
+
it "nested arrays with strings" do
|
54
|
+
post_with_filter(
|
55
|
+
:pass_params => {
|
56
|
+
:book => {
|
57
|
+
:genres => ["Tragedy"]
|
58
|
+
}
|
59
|
+
},
|
60
|
+
:allow => [
|
61
|
+
:book => :genres
|
62
|
+
]
|
63
|
+
)
|
64
|
+
result_should_be_equal({
|
65
|
+
"book" => {
|
66
|
+
"genres" => ["Tragedy"]
|
67
|
+
}
|
68
|
+
})
|
69
|
+
end
|
70
|
+
|
71
|
+
it "permit may specify symbols or strings" do
|
72
|
+
post_with_filter(
|
73
|
+
:pass_params => {
|
74
|
+
:book => {
|
75
|
+
:title => "Romeo and Juliet",
|
76
|
+
:author => "William Shakespeare"
|
77
|
+
},
|
78
|
+
:magazine => "Shakespeare Today"
|
79
|
+
},
|
80
|
+
:allow => [{
|
81
|
+
:book => [
|
82
|
+
"title",
|
83
|
+
:author
|
84
|
+
]},
|
85
|
+
"magazine"
|
86
|
+
]
|
87
|
+
)
|
88
|
+
result_should_be_equal({
|
89
|
+
"book" => {
|
90
|
+
"title" => "Romeo and Juliet",
|
91
|
+
"author" => "William Shakespeare",
|
92
|
+
},
|
93
|
+
"magazine" => "Shakespeare Today"
|
94
|
+
})
|
95
|
+
end
|
96
|
+
|
97
|
+
it "nested array with strings that should be hashes" do
|
98
|
+
post_with_filter(
|
99
|
+
:pass_params => {
|
100
|
+
:book => {
|
101
|
+
:genres => ["Tragedy"]
|
102
|
+
}
|
103
|
+
},
|
104
|
+
:allow => [
|
105
|
+
:book => [
|
106
|
+
:genres => :type
|
107
|
+
]
|
108
|
+
]
|
109
|
+
)
|
110
|
+
result_should_be_equal({})
|
111
|
+
end
|
112
|
+
|
113
|
+
it "nested array with strings that should be hashes and additional values" do
|
114
|
+
post_with_filter(
|
115
|
+
:pass_params => {
|
116
|
+
:book => {
|
117
|
+
:title => "Romeo and Juliet",
|
118
|
+
:genres => ["Tragedy"]
|
119
|
+
}
|
120
|
+
},
|
121
|
+
:allow => [
|
122
|
+
:book => [
|
123
|
+
:title,
|
124
|
+
:genres => :type
|
125
|
+
]
|
126
|
+
]
|
127
|
+
)
|
128
|
+
result_should_be_equal({
|
129
|
+
"book" => {
|
130
|
+
"title" => "Romeo and Juliet"
|
131
|
+
}
|
132
|
+
})
|
133
|
+
end
|
134
|
+
|
135
|
+
it "nested string that should be a hash" do
|
136
|
+
post_with_filter(
|
137
|
+
:pass_params => {
|
138
|
+
:book => {
|
139
|
+
:genre => "Tragedy"
|
140
|
+
}
|
141
|
+
},
|
142
|
+
:allow => [
|
143
|
+
:book => [
|
144
|
+
:genres => :type
|
145
|
+
]
|
146
|
+
]
|
147
|
+
)
|
148
|
+
result_should_be_equal({})
|
149
|
+
end
|
150
|
+
|
151
|
+
it "fields_for_style_nested_params" do
|
152
|
+
post_with_filter(
|
153
|
+
:pass_params => {
|
154
|
+
:book => {
|
155
|
+
:authors_attributes => {
|
156
|
+
:'0' => { :name => 'William Shakespeare', :age_of_death => '52' },
|
157
|
+
:'1' => { :name => 'Unattributed Assistant' }
|
158
|
+
}
|
159
|
+
}
|
160
|
+
},
|
161
|
+
:allow => [
|
162
|
+
:book => [
|
163
|
+
:authors_attributes => :name
|
164
|
+
]
|
165
|
+
]
|
166
|
+
)
|
167
|
+
result_should_be_equal({
|
168
|
+
"book" => {
|
169
|
+
"authors_attributes" => {
|
170
|
+
"0" => { "name" => "William Shakespeare" },
|
171
|
+
"1" => { "name" => "Unattributed Assistant" }
|
172
|
+
}
|
173
|
+
}
|
174
|
+
})
|
175
|
+
end
|
176
|
+
|
177
|
+
it "fields_for_style_nested_params with negative numbers" do
|
178
|
+
post_with_filter(
|
179
|
+
:pass_params => {
|
180
|
+
:book => {
|
181
|
+
:authors_attributes => {
|
182
|
+
:'-1' => { :name => 'William Shakespeare', :age_of_death => '52' },
|
183
|
+
:'-2' => { :name => 'Unattributed Assistant' }
|
184
|
+
}
|
185
|
+
}
|
186
|
+
},
|
187
|
+
:allow => [
|
188
|
+
:book => [
|
189
|
+
:authors_attributes => :name
|
190
|
+
]
|
191
|
+
]
|
192
|
+
)
|
193
|
+
result_should_be_equal({
|
194
|
+
"book" => {
|
195
|
+
"authors_attributes" => {
|
196
|
+
"-1" => { "name" => "William Shakespeare" },
|
197
|
+
"-2" => { "name" => "Unattributed Assistant" }
|
198
|
+
}
|
199
|
+
}
|
200
|
+
})
|
201
|
+
end
|
202
|
+
|
203
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sinatra::FilteringParameters do
|
4
|
+
|
5
|
+
def post_with_filter(args)
|
6
|
+
mock_app do
|
7
|
+
register Sinatra::FilteringParameters
|
8
|
+
if args[:allow].nil?
|
9
|
+
post('/sample/:name'){ params.to_json }
|
10
|
+
else
|
11
|
+
post('/sample/:name', allow: args[:allow]){ params.to_json }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
post '/sample/foo', args[:pass_params]
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'permitted parameters nothing' do
|
18
|
+
it "when success" do
|
19
|
+
post_with_filter(
|
20
|
+
:pass_params => { :a => 1, :b => 2, :c => 3 }
|
21
|
+
)
|
22
|
+
result_should_be_equal({ "a"=>"1", "b"=>"2", "c"=>"3", "splat"=>[], "captures"=>["foo"], "name"=>"foo" })
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'permitted parameters specified in' do
|
27
|
+
it 'symbol' do
|
28
|
+
post_with_filter(
|
29
|
+
:pass_params => { :a => 1, :b => 2, :c => 3 },
|
30
|
+
:allow => :name
|
31
|
+
)
|
32
|
+
result_should_be_equal({ "splat"=>[], "captures"=>["foo"], "name"=>"foo" })
|
33
|
+
end
|
34
|
+
it "string" do
|
35
|
+
post_with_filter(
|
36
|
+
:pass_params => { :a => 1, :b => 2, :c => 3 },
|
37
|
+
:allow => 'name'
|
38
|
+
)
|
39
|
+
result_should_be_equal({ "splat"=>[], "captures"=>["foo"], "name"=>"foo" })
|
40
|
+
end
|
41
|
+
it "array" do
|
42
|
+
post_with_filter(
|
43
|
+
:pass_params => { :a => 1, :b => 2, :c => 3 },
|
44
|
+
:allow => [:name, :a]
|
45
|
+
)
|
46
|
+
result_should_be_equal({ "splat"=>[], "captures"=>["foo"], "name"=>"foo", "a"=>"1" })
|
47
|
+
end
|
48
|
+
context "empty" do
|
49
|
+
it "string" do
|
50
|
+
post_with_filter(
|
51
|
+
:pass_params => { :a => 1, :b => 2, :c => 3 },
|
52
|
+
:allow => ''
|
53
|
+
)
|
54
|
+
result_should_be_equal({ "splat"=>[], "captures"=>["foo"] })
|
55
|
+
end
|
56
|
+
it "array" do
|
57
|
+
post_with_filter(
|
58
|
+
:pass_params => { :a => 1, :b => 2, :c => 3 },
|
59
|
+
:allow => []
|
60
|
+
)
|
61
|
+
result_should_be_equal({ "splat"=>[], "captures"=>["foo"] })
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
gem 'rspec', '~> 2.4'
|
2
|
+
require 'rspec'
|
3
|
+
require 'rack/test'
|
4
|
+
|
5
|
+
require 'sinatra'
|
6
|
+
require 'sinatra/contrib'
|
7
|
+
require 'sinatra/filtering_parameters'
|
8
|
+
require 'json'
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.include Rack::Test::Methods
|
12
|
+
config.include Sinatra::TestHelpers
|
13
|
+
end
|
14
|
+
|
15
|
+
def result_should_be_equal(filterd_params)
|
16
|
+
last_response.body.should == filterd_params.to_json
|
17
|
+
end
|
18
|
+
|
metadata
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sinatra-filtering_parameters
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Takeshi Yabe
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: sinatra
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rdoc
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.2
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.2
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '2.4'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '2.4'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rubygems-tasks
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0.2'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0.2'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rack-test
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: sinatra-contrib
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: This adds filter to use only those parameters that are allowed to a Sinatra
|
127
|
+
application.
|
128
|
+
email: tyabe@nilidea.com
|
129
|
+
executables: []
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files: []
|
132
|
+
files:
|
133
|
+
- .document
|
134
|
+
- .gitignore
|
135
|
+
- .rspec
|
136
|
+
- LICENSE.txt
|
137
|
+
- README.md
|
138
|
+
- Rakefile
|
139
|
+
- lib/sinatra/filtering_parameters.rb
|
140
|
+
- lib/sinatra/filtering_parameters/version.rb
|
141
|
+
- sinatra-filtering_parameters.gemspec
|
142
|
+
- spec/nested_parameters_spec.rb
|
143
|
+
- spec/permitted_parameters_spec.rb
|
144
|
+
- spec/spec_helper.rb
|
145
|
+
homepage: https://github.com/tyabe/sinatra-filtering_parameters#readme
|
146
|
+
licenses:
|
147
|
+
- MIT
|
148
|
+
post_install_message:
|
149
|
+
rdoc_options: []
|
150
|
+
require_paths:
|
151
|
+
- lib
|
152
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
160
|
+
requirements:
|
161
|
+
- - ! '>='
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
requirements: []
|
165
|
+
rubyforge_project:
|
166
|
+
rubygems_version: 1.8.23
|
167
|
+
signing_key:
|
168
|
+
specification_version: 3
|
169
|
+
summary: Filtering allowed parameters for Sinatra
|
170
|
+
test_files:
|
171
|
+
- spec/nested_parameters_spec.rb
|
172
|
+
- spec/permitted_parameters_spec.rb
|
173
|
+
- spec/spec_helper.rb
|