sinatra-my-params 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 03d95a0948071a629809d0733d17cf36ff552f451594de835cdda64670b9d32c
4
+ data.tar.gz: 4d80191893aeb6a86f6bbe269fa2be607f2a0c2807e0a125fd1e9d3090ab293d
5
+ SHA512:
6
+ metadata.gz: bd1456d10b45d4238ac698aff9247e869e6a0a7ec01ac7e6d544b3d5f0f3449f1a3cd511167e358e98cab476383fba69c5cfbe0ef92093448ed2b61102b76dd4
7
+ data.tar.gz: 8c576e0f4ae287df3a148a913ce62cc155269be7bb9b54db57138edb29b325f770e1248b1ad6dcb4ecce2fa43068e49812814b597493405bbf44c6dac85c109d
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc "Run tests"
8
+ task :default => :test
data/bin/permit_params ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'permit_params'
@@ -0,0 +1,35 @@
1
+ module PermitParams
2
+ def permitted_params(params, permitted)
3
+ params.select do |k,v|
4
+ permitted.keys.map(&:to_s).include?(k.to_s) && !v.nil? && coerce(v, permitted[k.to_sym])
5
+ end
6
+ end
7
+
8
+ private
9
+
10
+ def coerce(param, type, strong = false, options = {})
11
+ begin
12
+ return nil if param.nil?
13
+ return param if (param.is_a?(type) rescue false)
14
+ return Integer(param, 10) if type == Integer
15
+ return Float(param) if type == Float
16
+ return String(param) if type == String
17
+ return Date.parse(param) if type == Date
18
+ return Time.parse(param) if type == Time
19
+ return DateTime.parse(param) if type == DateTime
20
+ return Array(param.split(options[:delimiter] || ",")) if type == Array
21
+ return Hash[param.split(options[:delimiter] || ",").map{|c| c.split(options[:separator] || ":")}] if type == Hash
22
+ if [TrueClass, FalseClass, Boolean].include? type
23
+ coerced = /^(false|f|no|n|0)$/i === param.to_s ? false : /^(true|t|yes|y|1)$/i === param.to_s ? true : nil
24
+ raise ArgumentError if coerced.nil?
25
+ return coerced
26
+ end
27
+ return nil
28
+ rescue ArgumentError
29
+ if strong
30
+ raise InvalidParameterError, "'#{param}' is not a valid #{type}"
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,12 @@
1
+ require 'test/unit'
2
+ require 'permit_params'
3
+
4
+ class PermitParamsTest < Test::Unit::TestCase
5
+ include PermitParams
6
+
7
+ def test_pemit_string
8
+ input = { param_1: "hola" }
9
+ output = { param_1: "hola" }
10
+ assert_equal output, permitted_params( input, { param_1: String } )
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-my-params
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Marco Aviles
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-09-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple sinatra params sanitizer
14
+ email: nick@quaran.to
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - Rakefile
20
+ - bin/permit_params
21
+ - lib/permit_params.rb
22
+ - test/test_permit_params.rb
23
+ homepage: http://rubygems.org/gems/sinatra-my-params
24
+ licenses: []
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubygems_version: 3.2.3
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: permit_params!
45
+ test_files:
46
+ - test/test_permit_params.rb