sinatra-validation 0.3.1 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2a3b4d0dc2f17aabdeda813e847a8f0a6c36a0c7012aea5a84180d268a13269
4
- data.tar.gz: c3a8eeef5e8cd2c20d359a742024293b5c8866a8a9574115150e73566446555b
3
+ metadata.gz: e6a851a8606cd5ce9ac0f3134b79baea64e2ec1e19f5465c2d286ad1f0bd29b9
4
+ data.tar.gz: c2eabc80d34f383250e49d8d677205da9232b9b235713c38b998e36de47e7253
5
5
  SHA512:
6
- metadata.gz: 03dfa9b1447d46cdd6dceeefab0eacde3238bbe1972d49b4093457ad196bd1f5073046761f461a85c895d95ca0c8ec0863bb53058e0ab06b064fd95726e2105d
7
- data.tar.gz: 673c1b8c9ba84a068e4b6473cc483f06f195e935185999d6de67d565736372b994557b43677ba0f01c59ca2fe3c28b9a93a0de46dc916d8eb14d5002b344b9ec
6
+ metadata.gz: 19a7e50006a9117db3edcc5bb245e6da91aee562b2c8d617be856e73add4ff090863765e8621ec5b0fa61df36b12181421c0c3d7ab5bd6554a4f0c019b7457f2
7
+ data.tar.gz: a47a509e600fadecc6f8c6689bbc4516e32b71e297a58cde4139fa3b49df44c521cbd83f6c3cd1bd1bb3cdd29d165134fc0d55ec53d95b8e5f967941f680af24
data/.circleci/config.yml CHANGED
@@ -3,18 +3,18 @@ version: 2
3
3
  jobs:
4
4
  build:
5
5
  docker:
6
- - image: circleci/ruby:2.6.6
6
+ - image: ruby:3.3.0
7
7
 
8
8
  working_directory: ~/repo
9
9
 
10
10
  steps:
11
11
  - checkout
12
- - run:
12
+ - run:
13
13
  name: install deps
14
14
  command: |
15
15
  bundle install --jobs=4 --retry=3 --path vendor/bundle
16
16
 
17
- - run:
17
+ - run:
18
18
  name: run tests
19
19
  command: |
20
20
  bundle exec rake spec
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /doc/
7
7
  /pkg/
8
8
  /spec/reports/
9
+ /vendor/
9
10
  /tmp/
10
11
 
11
12
  # rspec failure tracking
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.3.3
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
- ruby '2.6.6'
2
+ ruby '3.3.3'
3
3
 
4
4
  # Specify your gem's dependencies in sinatra-validation.gemspec
5
5
  gemspec
data/README.md CHANGED
@@ -89,6 +89,13 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
89
89
 
90
90
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
91
91
 
92
+ ### Test
93
+
94
+ ```bash
95
+ $ bundle install
96
+ $ rake
97
+ ```
98
+
92
99
  ## Contributing
93
100
 
94
101
  Bug reports and pull requests are welcome on GitHub at https://github.com/IzumiSy/sinatra-validation. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
data/example/Gemfile.lock CHANGED
@@ -1,65 +1,57 @@
1
1
  PATH
2
- remote: /Users/seiya/Devs/sinatra-validation
2
+ remote: /Users/izumi/Devs/sinatra-validation
3
3
  specs:
4
- sinatra-validation (0.3.0)
4
+ sinatra-validation (0.3.2)
5
5
  dry-validation (~> 1.3)
6
6
  rack (>= 2.0.6)
7
- sinatra (~> 2.0.7)
7
+ sinatra (~> 2.1.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- concurrent-ruby (1.1.6)
13
- dry-configurable (0.11.5)
12
+ concurrent-ruby (1.1.9)
13
+ dry-configurable (0.13.0)
14
14
  concurrent-ruby (~> 1.0)
15
- dry-core (~> 0.4, >= 0.4.7)
16
- dry-equalizer (~> 0.2)
17
- dry-container (0.7.2)
15
+ dry-core (~> 0.6)
16
+ dry-container (0.9.0)
18
17
  concurrent-ruby (~> 1.0)
19
- dry-configurable (~> 0.1, >= 0.1.3)
20
- dry-core (0.4.9)
18
+ dry-configurable (~> 0.13, >= 0.13.0)
19
+ dry-core (0.7.1)
21
20
  concurrent-ruby (~> 1.0)
22
- dry-equalizer (0.3.0)
23
- dry-inflector (0.2.0)
24
- dry-initializer (3.0.3)
25
- dry-logic (1.0.6)
21
+ dry-inflector (0.2.1)
22
+ dry-initializer (3.0.4)
23
+ dry-logic (1.2.0)
26
24
  concurrent-ruby (~> 1.0)
27
- dry-core (~> 0.2)
28
- dry-equalizer (~> 0.2)
29
- dry-schema (1.5.0)
25
+ dry-core (~> 0.5, >= 0.5)
26
+ dry-schema (1.8.0)
30
27
  concurrent-ruby (~> 1.0)
31
- dry-configurable (~> 0.8, >= 0.8.3)
32
- dry-core (~> 0.4)
33
- dry-equalizer (~> 0.2)
28
+ dry-configurable (~> 0.13, >= 0.13.0)
29
+ dry-core (~> 0.5, >= 0.5)
34
30
  dry-initializer (~> 3.0)
35
31
  dry-logic (~> 1.0)
36
- dry-types (~> 1.4)
37
- dry-types (1.4.0)
32
+ dry-types (~> 1.5)
33
+ dry-types (1.5.1)
38
34
  concurrent-ruby (~> 1.0)
39
35
  dry-container (~> 0.3)
40
- dry-core (~> 0.4, >= 0.4.4)
41
- dry-equalizer (~> 0.3)
36
+ dry-core (~> 0.5, >= 0.5)
42
37
  dry-inflector (~> 0.1, >= 0.1.2)
43
38
  dry-logic (~> 1.0, >= 1.0.2)
44
- dry-validation (1.5.0)
39
+ dry-validation (1.7.0)
45
40
  concurrent-ruby (~> 1.0)
46
41
  dry-container (~> 0.7, >= 0.7.1)
47
- dry-core (~> 0.4)
48
- dry-equalizer (~> 0.2)
42
+ dry-core (~> 0.5, >= 0.5)
49
43
  dry-initializer (~> 3.0)
50
- dry-schema (~> 1.5)
44
+ dry-schema (~> 1.8, >= 1.8.0)
51
45
  mustermann (1.1.1)
52
46
  ruby2_keywords (~> 0.0.1)
53
- rack (2.2.2)
54
- rack-contrib (2.2.0)
55
- rack (~> 2.0)
56
- rack-protection (2.0.8.1)
47
+ rack (2.2.3)
48
+ rack-protection (2.1.0)
57
49
  rack
58
- ruby2_keywords (0.0.2)
59
- sinatra (2.0.8.1)
50
+ ruby2_keywords (0.0.5)
51
+ sinatra (2.1.0)
60
52
  mustermann (~> 1.0)
61
- rack (~> 2.0)
62
- rack-protection (= 2.0.8.1)
53
+ rack (~> 2.2)
54
+ rack-protection (= 2.1.0)
63
55
  tilt (~> 2.0)
64
56
  tilt (2.0.10)
65
57
 
@@ -67,12 +59,8 @@ PLATFORMS
67
59
  ruby
68
60
 
69
61
  DEPENDENCIES
70
- rack-contrib
71
62
  sinatra
72
63
  sinatra-validation!
73
64
 
74
- RUBY VERSION
75
- ruby 2.6.6p146
76
-
77
65
  BUNDLED WITH
78
66
  1.17.2
data/example/app.rb CHANGED
@@ -58,4 +58,36 @@ class Application < Sinatra::Base
58
58
  halt 500, 'invalid'
59
59
  end
60
60
  end
61
+
62
+ get '/rule/:value' do
63
+ validates do
64
+ params do
65
+ optional(:value).filled(:str?)
66
+ end
67
+ rule(:value) do
68
+ key.failure('Invalid param') unless value.match?(/^[a-z]+$/)
69
+ end
70
+ end
71
+
72
+ 'ok'
73
+ end
74
+
75
+ get '/filter' do
76
+ validates filter_unpermitted_params: true do
77
+ params do
78
+ optional(:allowed).filled(:str?)
79
+ end
80
+ end
81
+ params.map{|k, v| "#{k}=#{v}"}.join(' ')
82
+ end
83
+
84
+ get '/result' do
85
+ result = validates do
86
+ params do
87
+ optional(:allowed).filled(:str?)
88
+ end
89
+ end
90
+ result.params.map{|k, v| "#{k}=#{v}"}.join(' ')
91
+ end
92
+
61
93
  end
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module Validation
3
- VERSION = "0.3.1"
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
@@ -28,7 +28,12 @@ module Sinatra
28
28
  def validates(options = {}, &block)
29
29
  schema = Class.new(Dry::Validation::Contract, &block).new
30
30
  validation = schema.call(params)
31
- result = Result.new(params).with_message(validation.errors)
31
+ result = Result.new(Sinatra::IndifferentHash[validation.to_h])
32
+ .with_message(validation.errors)
33
+
34
+ if options[:filter_unpermitted_params] || settings.filter_unpermitted_params
35
+ params.replace validation.to_h
36
+ end
32
37
 
33
38
  if options[:silent] || settings.silent_validation
34
39
  return result
@@ -37,6 +42,8 @@ module Sinatra
37
42
  if validation.failure?
38
43
  raise InvalidParameterError.new(result)
39
44
  end
45
+
46
+ result
40
47
  rescue InvalidParameterError => exception
41
48
  if options[:raise] || settings.raise_sinatra_validation_exception
42
49
  raise exception
@@ -57,6 +64,7 @@ module Sinatra
57
64
  app.helpers Validation::Helpers
58
65
  app.set :silent_validation, false
59
66
  app.set :raise_sinatra_validation_exception, false
67
+ app.set :filter_unpermitted_params, false
60
68
  end
61
69
  end
62
70
  end
@@ -21,12 +21,12 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency 'sinatra', '~> 2.0.7'
25
- spec.add_dependency 'rack', '>= 2.0.6'
26
- spec.add_dependency 'dry-validation', '~> 1.3'
24
+ spec.add_dependency 'sinatra', '~> 4.0.0'
25
+ spec.add_dependency 'rack', '>= 3.0.9'
26
+ spec.add_dependency 'dry-validation', '~> 1.10'
27
27
 
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "rake", "~> 13.1"
29
+ spec.add_development_dependency "rspec", "~> 3.13"
30
30
  spec.add_development_dependency "rack-contrib"
31
31
  spec.add_development_dependency "rack-test"
32
32
  spec.add_development_dependency "pry"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-validation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - IzumiSy
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-03 00:00:00.000000000 Z
11
+ date: 2024-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.7
19
+ version: 4.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.7
26
+ version: 4.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.6
33
+ version: 3.0.9
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.6
40
+ version: 3.0.9
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dry-validation
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.3'
47
+ version: '1.10'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.3'
54
+ version: '1.10'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '13.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '13.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.0'
75
+ version: '3.13'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.0'
82
+ version: '3.13'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rack-contrib
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +132,7 @@ files:
132
132
  - ".circleci/config.yml"
133
133
  - ".gitignore"
134
134
  - ".rspec"
135
+ - ".ruby-version"
135
136
  - CODE_OF_CONDUCT.md
136
137
  - Gemfile
137
138
  - LICENSE.txt
@@ -150,7 +151,7 @@ homepage: https://github.com/IzumiSy/sinatra-validation
150
151
  licenses:
151
152
  - MIT
152
153
  metadata: {}
153
- post_install_message:
154
+ post_install_message:
154
155
  rdoc_options: []
155
156
  require_paths:
156
157
  - lib
@@ -165,8 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  - !ruby/object:Gem::Version
166
167
  version: '0'
167
168
  requirements: []
168
- rubygems_version: 3.0.3
169
- signing_key:
169
+ rubygems_version: 3.5.11
170
+ signing_key:
170
171
  specification_version: 4
171
172
  summary: '"Sinatra extension for request parameter validation"'
172
173
  test_files: []