steplib 0.9.0.6 → 0.9.0.7
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/steplib/hash_utils.rb +9 -0
- data/lib/steplib/steplib_validator.rb +79 -21
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c487d428b66291bc8c2661014d48a7a0ee3f2222
|
4
|
+
data.tar.gz: 695069371c9936d4b657076e1c88045201558ef3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32c5e41dc32538d47033947b4c88ee0b9a50b54e19ddbe67343635baa8f73667230f8dd9054287ebecec6ef507e41fed32239da2ba4235fc8a92e2a94a18d000
|
7
|
+
data.tar.gz: e33072831220441ab59f487b35383558fd7ef86c8139051a57ed5d99299becc788fc54608dc68c16dc0a3bf0e7dd3afa49ce4c093b7e5e74d2a87cbc8af01ca6
|
data/lib/steplib/hash_utils.rb
CHANGED
@@ -13,6 +13,15 @@ module Steplib
|
|
13
13
|
return Marshal.load(Marshal.dump(hsh))
|
14
14
|
end
|
15
15
|
|
16
|
+
def whitelist(hsh, whitelist)
|
17
|
+
return nil if hsh.nil?
|
18
|
+
res_hash = {}
|
19
|
+
whitelist.each do |whiteitm|
|
20
|
+
res_hash[whiteitm] = hsh[whiteitm]
|
21
|
+
end
|
22
|
+
return res_hash
|
23
|
+
end
|
24
|
+
|
16
25
|
def check_required_attributes_and_types!(hash_to_check, attribute_type_array)
|
17
26
|
attribute_type_array.each do |a_attribute_type_itm|
|
18
27
|
attribute_key = a_attribute_type_itm[0]
|
@@ -41,8 +41,33 @@ module Steplib
|
|
41
41
|
validate_step_version!(step_data['latest'])
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
45
|
-
|
44
|
+
def whitelist_step_version(step_version_data)
|
45
|
+
raise "Input step_version_data hash is nil" if step_version_data.nil?
|
46
|
+
|
47
|
+
base_prop_whitelist = required_step_version_properties_with_types().map { |e| e.first }
|
48
|
+
base_prop_whitelist = base_prop_whitelist.concat( optional_step_version_properties() )
|
49
|
+
step_version_data = HashUtils.whitelist(step_version_data, base_prop_whitelist)
|
50
|
+
# source
|
51
|
+
step_version_data['source'] = HashUtils.whitelist(
|
52
|
+
step_version_data['source'],
|
53
|
+
required_step_version_source_properties_with_types().map { |e| e.first })
|
54
|
+
# inputs
|
55
|
+
step_version_data['inputs'] = step_version_data['inputs'].map do |a_step_input|
|
56
|
+
HashUtils.whitelist(
|
57
|
+
a_step_input,
|
58
|
+
required_step_version_inputs_properties_with_types().map { |e| e.first })
|
59
|
+
end
|
60
|
+
# outputs
|
61
|
+
step_version_data['outputs'] = step_version_data['outputs'].map do |a_step_output|
|
62
|
+
HashUtils.whitelist(
|
63
|
+
a_step_output,
|
64
|
+
required_step_version_outputs_properties_with_types().map { |e| e.first })
|
65
|
+
end
|
66
|
+
return step_version_data
|
67
|
+
end
|
68
|
+
|
69
|
+
def required_step_version_properties_with_types
|
70
|
+
return [
|
46
71
|
# auto generated
|
47
72
|
['id', String],
|
48
73
|
['steplib_source', String],
|
@@ -59,16 +84,56 @@ module Steplib
|
|
59
84
|
['is_requires_admin_user', ABooleanValue],
|
60
85
|
['inputs', Array],
|
61
86
|
['outputs', Array],
|
62
|
-
]
|
87
|
+
]
|
88
|
+
end
|
89
|
+
|
90
|
+
def optional_step_version_properties
|
91
|
+
return ['icon_url_256']
|
92
|
+
end
|
93
|
+
|
94
|
+
def required_step_version_source_properties_with_types
|
95
|
+
return [ ['git', String] ]
|
96
|
+
end
|
97
|
+
|
98
|
+
def required_step_version_inputs_properties_with_types
|
99
|
+
return [
|
100
|
+
['title', String],
|
101
|
+
['description', String],
|
102
|
+
['mapped_to', String],
|
103
|
+
['is_expand', ABooleanValue],
|
104
|
+
['is_required', ABooleanValue],
|
105
|
+
['value_options', Array],
|
106
|
+
['value', String],
|
107
|
+
['is_dont_change_value', ABooleanValue]
|
108
|
+
]
|
109
|
+
end
|
110
|
+
|
111
|
+
def required_step_version_outputs_properties_with_types
|
112
|
+
return [
|
113
|
+
['title', String],
|
114
|
+
['description', String],
|
115
|
+
['mapped_to', String]
|
116
|
+
]
|
117
|
+
end
|
118
|
+
|
119
|
+
def validate_step_version!(step_version_data)
|
120
|
+
# whitelist
|
121
|
+
step_version_data = whitelist_step_version(step_version_data)
|
122
|
+
# check/validate
|
123
|
+
HashUtils.check_required_attributes_and_types!(
|
124
|
+
step_version_data,
|
125
|
+
required_step_version_properties_with_types()
|
126
|
+
)
|
63
127
|
|
64
128
|
# optional - can be nil
|
65
129
|
step_version_data = HashUtils.set_missing_defaults(
|
66
130
|
step_version_data,
|
67
131
|
[{key: 'icon_url_256', value: nil}])
|
68
132
|
|
69
|
-
HashUtils.check_required_attributes_and_types!(
|
70
|
-
['
|
71
|
-
|
133
|
+
HashUtils.check_required_attributes_and_types!(
|
134
|
+
step_version_data['source'],
|
135
|
+
required_step_version_source_properties_with_types()
|
136
|
+
)
|
72
137
|
|
73
138
|
a_host_os_tags = step_version_data['host_os_tags']
|
74
139
|
a_host_os_tags.each { |a_tag|
|
@@ -87,16 +152,10 @@ module Steplib
|
|
87
152
|
|
88
153
|
a_inputs = step_version_data['inputs']
|
89
154
|
a_inputs.each do |a_input_itm|
|
90
|
-
HashUtils.check_required_attributes_and_types!(
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
['is_expand', ABooleanValue],
|
95
|
-
['is_required', ABooleanValue],
|
96
|
-
['value_options', Array],
|
97
|
-
['value', String],
|
98
|
-
['is_dont_change_value', ABooleanValue]
|
99
|
-
])
|
155
|
+
HashUtils.check_required_attributes_and_types!(
|
156
|
+
a_input_itm,
|
157
|
+
required_step_version_inputs_properties_with_types()
|
158
|
+
)
|
100
159
|
|
101
160
|
a_value_options = a_input_itm['value_options']
|
102
161
|
a_value_options.each { |a_value_option|
|
@@ -106,11 +165,10 @@ module Steplib
|
|
106
165
|
|
107
166
|
a_outputs = step_version_data['outputs']
|
108
167
|
a_outputs.each do |a_output_itm|
|
109
|
-
HashUtils.check_required_attributes_and_types!(
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
])
|
168
|
+
HashUtils.check_required_attributes_and_types!(
|
169
|
+
a_output_itm,
|
170
|
+
required_step_version_outputs_properties_with_types()
|
171
|
+
)
|
114
172
|
end
|
115
173
|
end
|
116
174
|
|