mini_defender 0.7.4 → 0.8.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 +4 -4
- data/lib/mini_defender/rules/default.rb +3 -1
- data/lib/mini_defender/rules/mime_types.rb +2 -1
- data/lib/mini_defender/validator.rb +33 -11
- data/lib/mini_defender/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 53ca5d9198b8205b86302ffa2541950931680d2af58486904bbda6835d457c65
|
|
4
|
+
data.tar.gz: bf41bed9f56f20c8ac67df245e8951657dca5e59208ec4c88a95903813763f17
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a772cfacf137bb67985efe6976308894df48b649058e417c8be4bf66be011b016aebd947f518d8a498f627fe3f292c7a9494cf0a0ea2ace1b74cf470884a4d5
|
|
7
|
+
data.tar.gz: 6cb8e81c7fea23dd5d27bae9681a47ff3d9fb2a5cbcc004c1269509c189ea343dbbf853d48ad6f22cfb8187e28b31acac0d675441bb4be3357469d4b822075f5
|
|
@@ -10,7 +10,9 @@ class MiniDefender::Rules::Default < MiniDefender::Rule
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def self.make(args)
|
|
13
|
-
|
|
13
|
+
unless args.length == 1
|
|
14
|
+
raise ArgumentError, 'Expected exactly one argument.'
|
|
15
|
+
end
|
|
14
16
|
|
|
15
17
|
new(args[0])
|
|
16
18
|
end
|
|
@@ -28,9 +28,10 @@ class MiniDefender::Rules::MimeTypes < MiniDefender::Rule
|
|
|
28
28
|
def passes?(attribute, value, validator)
|
|
29
29
|
@file = value.is_a?(ActionDispatch::Http::UploadedFile)
|
|
30
30
|
content_type = Marcel::MimeType.for(value.read)
|
|
31
|
+
extension_mime_type = Marcel::MimeType.for(extension: File.extname(value.original_filename))
|
|
31
32
|
value.rewind
|
|
32
33
|
|
|
33
|
-
@file && @types.include?(content_type)
|
|
34
|
+
@file && @types.include?(content_type) && content_type == extension_mime_type
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
def message(attribute, value, validator)
|
|
@@ -27,30 +27,52 @@ module MiniDefender
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
# Set default values for missing data key compared to rules
|
|
30
|
-
data_rules.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
defaults_rules = data_rules.filter { |k, set| set.any? { |r| r.defaults?(self) } }
|
|
31
|
+
defaults_rules.each do |key_pattern, set|
|
|
32
|
+
# If element is not inside an array
|
|
33
|
+
unless key_pattern.match?(/\*/)
|
|
34
|
+
if missing_value?(@data[key_pattern])
|
|
35
|
+
@data[key_pattern] = set.map { |r| r.default_value(self) }.reject(&:nil?).first
|
|
34
36
|
end
|
|
37
|
+
|
|
38
|
+
next
|
|
35
39
|
end
|
|
40
|
+
|
|
41
|
+
parent, sep, child_key = key_pattern.rpartition('*')
|
|
42
|
+
parent += sep
|
|
43
|
+
|
|
44
|
+
# If parent or a sibling exists, add the default value
|
|
45
|
+
pattern = Regexp.new("\\A#{parent.gsub('*', '\d')}\\z")
|
|
46
|
+
additions = {}
|
|
47
|
+
@data.each do |k, _|
|
|
48
|
+
unless k.match?(pattern)
|
|
49
|
+
next
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
current_child_key = "#{k}#{child_key}"
|
|
53
|
+
|
|
54
|
+
unless missing_value?(@data[current_child_key])
|
|
55
|
+
next
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
additions[current_child_key] = set.map { |r| r.default_value(self) }.reject(&:nil?).first
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
@data.merge!(additions)
|
|
36
62
|
end
|
|
37
63
|
|
|
38
64
|
data_rules = @expander.expand(data_rules, @data)
|
|
39
|
-
|
|
40
65
|
data_rules.each do |k, rule_set|
|
|
41
66
|
@errors[k] = []
|
|
42
67
|
|
|
43
68
|
value_included = true
|
|
44
69
|
required = rule_set.any? { |r| r.implicit?(self) }
|
|
45
70
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
@
|
|
71
|
+
unless @data.key?(k)
|
|
72
|
+
if required
|
|
73
|
+
@errors[k] << 'This field is missing.'
|
|
49
74
|
end
|
|
50
|
-
end
|
|
51
75
|
|
|
52
|
-
unless @data.key?(k)
|
|
53
|
-
@errors[k] << 'This field is missing.' if required
|
|
54
76
|
next
|
|
55
77
|
end
|
|
56
78
|
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mini_defender
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ali Alhoshaiyan
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: activesupport
|
|
@@ -261,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
261
261
|
- !ruby/object:Gem::Version
|
|
262
262
|
version: '0'
|
|
263
263
|
requirements: []
|
|
264
|
-
rubygems_version: 3.6.
|
|
264
|
+
rubygems_version: 3.6.9
|
|
265
265
|
specification_version: 4
|
|
266
266
|
summary: A small and efficient validation library for Rails and anything that uses
|
|
267
267
|
Ruby.
|