wazuh-ruby-client 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ee6623bb491081899d0769df71e12fca755e9dc68bf86b6dfb1a36fc8e0a3ad
4
- data.tar.gz: c9536ba23160a14a47c8f41ba6846edde3b49dbf1c6d008d66be3c177dec1655
3
+ metadata.gz: 57ef8d1a92fc16dc1b46148569a6b6b4f3c9fe4ca1729ad705205efc5952f15c
4
+ data.tar.gz: 5303f74c914950dcf658b69922dfae54940456dee9f60c30441f1971a9b9e849
5
5
  SHA512:
6
- metadata.gz: 623e3f6a34bfc98fed98cf08f0c4ec2adfcf20d28bcab4b5d0b3a68d36219d75271ba44212428246b629fff74d284221e0322a49213cf52121f12f8733a2bd42
7
- data.tar.gz: 7527db0567ed152561ee7d372e95fec140998fab2e21c814c447e53f3bad0740b24193aaef950107189bb89420d11516e6fd2f76fc0a9bafea4708d0a122887b
6
+ metadata.gz: 7d81defd979d50b0d95d3654e95a61085a866018a513e0281e15036eb97bb8a1b30d42969db9d8f496329b6f7002aa21f3e6931b5c805adb8c4f7924113fcfa3
7
+ data.tar.gz: dafe1028ee3baf8ab58621abdbef71bd8793bd1fadc866021c0b6f729be5349e93d07b52f0b395e8f498bdf2e72a3310573376435a42cc658bb8da5950ae1c97
@@ -8,10 +8,10 @@ jobs:
8
8
  steps:
9
9
  - uses: actions/checkout@v1
10
10
 
11
- - name: Set up Ruby 2.6.5
11
+ - name: Set up Ruby 2.6
12
12
  uses: actions/setup-ruby@v1
13
13
  with:
14
- ruby-version: 2.6.5
14
+ ruby-version: 2.6
15
15
 
16
16
  - name: Install bundler2
17
17
  run: gem install bundler
data/.gitignore CHANGED
@@ -15,6 +15,8 @@ Gemfile.lock
15
15
  *.crt
16
16
  *.key
17
17
  *.ca
18
+ *.bak
18
19
  .env
19
20
  .bundle
20
21
  .DS_Store
22
+ log
data/CHANGELOG.md CHANGED
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.5]
11
+
12
+ - Get all items with `offset_request`
13
+ - So far only 500 items(Wazuh API default) have been retrieved that contain a `totalItems` field such as `#all_agents` .
14
+ - For such an endpoint, implemented `offset_request` to fetch all items.
15
+ - This change does not change the type of the return value. However, it may take some time because it sends repeated requests to get all the items.
16
+
10
17
  ## [0.2.4] - 2020-03-31
11
18
 
12
19
  - `agents_by_group` also returns the `item` field.
@@ -1,3 +1,3 @@
1
1
  module WazuhRubyClient
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -23,8 +23,7 @@ module Wazuh
23
23
  # @return [Array] Returns Array containing agents
24
24
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-agents
25
25
  def all_agents(options = {})
26
- data = get '/agents', options
27
- data.items
26
+ offset_request('get', '/agents', options)
28
27
  end
29
28
 
30
29
  # Returns various information from an agent.
@@ -290,8 +289,7 @@ module Wazuh
290
289
  # @option options [String] q
291
290
  # @see https://documentation.wazuh.com/3.11/user-manual/api/reference.html#get-agents-in-a-group
292
291
  def agents_by_group(group_id, options = {})
293
- data = get "/agents/groups/#{group_id}", options
294
- data.items
292
+ offset_request('get', "/agents/groups/#{group_id}", options)
295
293
  end
296
294
 
297
295
  # Get agents without group
@@ -35,8 +35,7 @@ module Wazuh
35
35
  # Filters by final score.
36
36
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-cis-cat-results-from-an-agent
37
37
  def ciscat_result(agent_id, options = {})
38
- data = get "/ciscat/#{agent_id}/results", options
39
- data.items
38
+ offset_request("get", "/ciscat/#{agent_id}/results", options)
40
39
  end
41
40
  end
42
41
  end
@@ -116,8 +116,7 @@ module Wazuh
116
116
  # @option options [category] :category
117
117
  # Filters by category of log
118
118
  def cluster_logs_by_node(node_id, options)
119
- data = get "/cluster/#{node_id}/logs", options
120
- data.items
119
+ offset_request("get", "/cluster/#{node_id}/logs", options)
121
120
  end
122
121
 
123
122
  # Get summary of ossec.log from a specific node in cluster
@@ -142,8 +141,7 @@ module Wazuh
142
141
  # Get nodes info
143
142
  #
144
143
  def nodes(options = {})
145
- data = get '/cluster/nodes', options
146
- data.items
144
+ offset_request('get', '/cluster/nodes', options)
147
145
  end
148
146
 
149
147
  # Restart a specific node in cluster
@@ -23,8 +23,7 @@ module Wazuh
23
23
  # Allowed values: enabled, disabled, all
24
24
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-decoders
25
25
  def all_decoders(options = {})
26
- data = get '/decoders', options
27
- data.items
26
+ offset_request("get", "/decoders", options)
28
27
  end
29
28
 
30
29
  # Get all decoders files
@@ -50,8 +49,7 @@ module Wazuh
50
49
  # Name of the decoder file to download.
51
50
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-decoders-files
52
51
  def all_decoders_files(options = {})
53
- data = get '/decoders/files', options
54
- data.items
52
+ offset_request('get', '/decoders/files', options)
55
53
  end
56
54
 
57
55
  # Get all parent decoders
@@ -67,8 +65,7 @@ module Wazuh
67
65
  # Looks for elements with the specified string.
68
66
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-parent-decoders
69
67
  def all_parent_decoders(options = {})
70
- data = get '/decoders/parents', options
71
- data.items
68
+ offset_request('get', '/decoders/parents', options)
72
69
  end
73
70
 
74
71
  # Get decoders by name
@@ -86,8 +83,7 @@ module Wazuh
86
83
  # Looks for elements with the specified string.
87
84
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-decoders-by-name
88
85
  def decoders_by_name(decoder_name, options = {})
89
- data = get "/decoders/#{decoder_name}", options
90
- data.items
86
+ offset_request("get", "/decoders/#{decoder_name}", options)
91
87
  end
92
88
  end
93
89
  end
@@ -42,8 +42,7 @@ module Wazuh
42
42
  # Filters by board_serial.
43
43
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-hardware-info-of-all-agents
44
44
  def experimental_hardware(options = {})
45
- data = get '/experimental/syscollector/hardware', options
46
- data.items
45
+ offset_request('get', '/experimental/syscollector/hardware', options)
47
46
  end
48
47
 
49
48
  # Get network address info of all agents
@@ -72,8 +71,7 @@ module Wazuh
72
71
  # Filters by netmask.
73
72
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-address-info-of-all-agents
74
73
  def experimental_netaddr(options = {})
75
- data = get '/experimental/syscollector/netaddr', options
76
- data.items
74
+ offset_request('get', '/experimental/syscollector/netaddr', options)
77
75
  end
78
76
 
79
77
  # Get network interface info of all agents
@@ -109,8 +107,7 @@ module Wazuh
109
107
  # @option options [rx_dropped] :rx_dropped
110
108
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-interface-info-of-all-agents
111
109
  def experimental_netiface(options = {})
112
- data = get '/experimental/syscollector/netiface', options
113
- data.items
110
+ offset_request('get', '/experimental/syscollector/netiface', options)
114
111
  end
115
112
 
116
113
  # Get network protocol info of all agents
@@ -137,8 +134,7 @@ module Wazuh
137
134
  # Filters by dhcp.
138
135
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-protocol-info-of-all-agents
139
136
  def experimental_netproto(options = {})
140
- data = get '/experimental/syscollector/netproto', options
141
- data.items
137
+ offset_request('get', '/experimental/syscollector/netproto', options)
142
138
  end
143
139
 
144
140
  # Get os info of all agents
@@ -168,8 +164,7 @@ module Wazuh
168
164
  # Filters by release.
169
165
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-os-info-of-all-agents
170
166
  def experimental_os(options = {})
171
- data = get '/experimentalsyscollector/os', options
172
- data.items
167
+ offset_request('get', '/experimentalsyscollector/os', options)
173
168
  end
174
169
 
175
170
  # Get packages info of all agents
@@ -198,8 +193,7 @@ module Wazuh
198
193
  # Filters by format.
199
194
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-packages-info-of-all-agents
200
195
  def experimental_packages(options = {})
201
- data = get '/experimental/syscollector/packages', options
202
- data.items
196
+ offset_request('get', '/experimental/syscollector/packages', options)
203
197
  end
204
198
 
205
199
  # Get ports info of all agents
@@ -232,8 +226,7 @@ module Wazuh
232
226
  # Filters by state.
233
227
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-ports-info-of-all-agents
234
228
  def experimental_ports(options = {})
235
- data = get '/experimental/syscollector/ports', options
236
- data.items
229
+ offset_request('get', '/experimental/syscollector/ports', options)
237
230
  end
238
231
 
239
232
  # Get processes info of all agents
@@ -280,8 +273,7 @@ module Wazuh
280
273
  # Filters by process suser.
281
274
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-processes-info-of-all-agents
282
275
  def experimental_processes(options = {})
283
- data = get '/experimental/syscollector/processes', options
284
- data.items
276
+ offset_request('get', '/experimental/syscollector/processes', options)
285
277
  end
286
278
 
287
279
  # Get CIS-CAT results
@@ -309,8 +301,7 @@ module Wazuh
309
301
  # @option options [score] :score
310
302
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-cis-cat-results
311
303
  def experimental_ciscat_results(options = {})
312
- data = get '/experimental/ciscat/results', options
313
- data.items
304
+ offset_request('get', '/experimental/ciscat/results', options)
314
305
  end
315
306
  end
316
307
  end
@@ -18,8 +18,7 @@ module Wazuh
18
18
  # Filters by path.
19
19
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-lists
20
20
  def cdb_lists(options = {})
21
- data = get '/lists', options
22
- data.items
21
+ offset_request('get', '/lists', options)
23
22
  end
24
23
 
25
24
  # Get paths from all lists
@@ -35,8 +34,7 @@ module Wazuh
35
34
  # Looks for elements with the specified string.
36
35
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-paths-from-all-lists
37
36
  def cdb_files_path(options = {})
38
- data = get '/lists/files', options
39
- data.items
37
+ offset_request('get', '/lists/files', options)
40
38
  end
41
39
  end
42
40
  end
@@ -90,8 +90,7 @@ module Wazuh
90
90
  #
91
91
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-ossec-log
92
92
  def manager_log
93
- data = get '/manager/logs'
94
- data.items
93
+ offset_request('get', '/manager/logs')
95
94
  end
96
95
 
97
96
  # Get summary of ossec.log
@@ -39,8 +39,7 @@ module Wazuh
39
39
  # @option options [search] :search
40
40
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rootcheck-cis-requirements
41
41
  def rootcheck_cis_requirements(agent_id, options = {})
42
- data = get "/rootcheck/#{agent_id}/cis", options
43
- data.items
42
+ offset_request('get', "/rootcheck/#{agent_id}/cis", options)
44
43
  end
45
44
 
46
45
  # Get rootcheck database
@@ -56,8 +55,7 @@ module Wazuh
56
55
  # @option options [status] :status
57
56
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rootcheck-database
58
57
  def rootcheck_database(agent_id, options = {})
59
- data = get "/rootcheck/#{agent_id}", options
60
- data.items
58
+ offset_request('get', "/rootcheck/#{agent_id}", options)
61
59
  end
62
60
 
63
61
  # Get rootcheck pci requirements
@@ -70,8 +68,7 @@ module Wazuh
70
68
  # @option options [search] :search
71
69
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rootcheck-pci-requirements
72
70
  def rootcheck_pic_requirements(agent_id, options = {})
73
- data = get "/rootcheck/#{agent_id}/pci", options
74
- data.items
71
+ offset_request('get', "/rootcheck/#{agent_id}/pci", options)
75
72
  end
76
73
 
77
74
  # Run rootcheck scan in all agents
@@ -7,64 +7,56 @@ module Wazuh
7
7
  #
8
8
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-rules
9
9
  def all_rules(options = {})
10
- data = get '/rules', options
11
- data.items
10
+ offset_request('get', '/rules', options)
12
11
  end
13
12
 
14
13
  # Returns the files of all rules.
15
14
  #
16
15
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-files-of-rules
17
16
  def rule_files(options = {})
18
- data = get '/rules/files', options
19
- data.items
17
+ offset_request('get', '/rules/files', options)
20
18
  end
21
19
 
22
20
  # Returns the GDPR requirements of all rules.
23
21
  #
24
22
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-gdpr-requirements
25
23
  def gdpr_rules(options = {})
26
- data = get '/rules/gdpr', options
27
- data.items
24
+ offset_request('get', '/rules/gdpr', options)
28
25
  end
29
26
 
30
27
  # Returns the GPG13 requirements of all rules.
31
28
  #
32
29
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-gpg13-requirements
33
30
  def gpg13_rules(options = {})
34
- data = get '/rules/gpg13', options
35
- data.items
31
+ offset_request('get', '/rules/gpg13', options)
36
32
  end
37
33
 
38
34
  # Returns the groups of all rules.
39
35
  #
40
36
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-groups
41
37
  def rules_groups(options = {})
42
- data = get '/rules/groups', options
43
- data.items
38
+ offset_request('get', '/rules/groups', options)
44
39
  end
45
40
 
46
41
  # Returns the HIPAA requirements of all rules.
47
42
  #
48
43
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-hipaa-requirements
49
44
  def hipaa_rules(options = {})
50
- data = get '/rules/hipaa', options
51
- data.items
45
+ offset_request('get', '/rules/hipaa', options)
52
46
  end
53
47
 
54
48
  # Returns the NIST-800-53 requirements of all rules.
55
49
  #
56
50
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-nist-800-53-requirements
57
51
  def nist_800_53_rules(options = {})
58
- data = get '/rules/nist-800-53', options
59
- data.items
52
+ offset_request('get', '/rules/nist-800-53', options)
60
53
  end
61
54
 
62
55
  # Returns the PCI requirements of all rules
63
56
  #
64
57
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-pci-requirements
65
58
  def pic_rules(options = {})
66
- data = get '/rules/pci', options
67
- data.items
59
+ offset_request('get', '/rules/pci', options)
68
60
  end
69
61
 
70
62
  # Returns the rules with the specified id.
@@ -80,8 +72,7 @@ module Wazuh
80
72
  # Looks for elements with the specified string.
81
73
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rules-by-id
82
74
  def rule_by_id(rule_id, options = {})
83
- data = get "/rules/#{rule_id}", options
84
- data.items
75
+ offset_request('get', "/rules/#{rule_id}", options)
85
76
  end
86
77
  end
87
78
  end
@@ -39,8 +39,7 @@ module Wazuh
39
39
  # Looks for elements with the specified string.
40
40
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-security-configuration-assessment-sca-checks-database
41
41
  def checks_sca_database(agent_id, policy_id, options = {})
42
- data = get "/sca/#{agent_id}/checks/#{policy_id}", options
43
- data.items
42
+ offset_request('get', "/sca/#{agent_id}/checks/#{policy_id}", options)
44
43
  end
45
44
 
46
45
  # Get security configuration assessment (SCA) database
@@ -66,8 +65,7 @@ module Wazuh
66
65
  # Query to filter results by. This is specially useful to filter by total checks passed, failed or total score (fields pass, fail, score).
67
66
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-security-configuration-assessment-sca-database
68
67
  def sca_database(agent_id, options = {})
69
- data = get "/sca/#{agent_id}", options
70
- data.items
68
+ offset_request('get', "/sca/#{agent_id}", options)
71
69
  end
72
70
  end
73
71
  end
@@ -33,8 +33,7 @@ module Wazuh
33
33
  # Returns the files with the specified hash (md5, sha1 or sha256).
34
34
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-syscheck-files
35
35
  def syscheck_files(agent_id, options = {})
36
- data = get "/syscheck/#{agent_id}", options
37
- data.items
36
+ offset_request('get', "/syscheck/#{agent_id}", options)
38
37
  end
39
38
 
40
39
  # Clears the syscheck database for the specified agent.
@@ -38,8 +38,7 @@ module Wazuh
38
38
  # Filters by netmask.
39
39
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-address-info-of-an-agent
40
40
  def netaddr(agent_id, options = {})
41
- data = get "/syscollector/#{agent_id}/netaddr", options
42
- data.items
41
+ offset_request('get', "/syscollector/#{agent_id}/netaddr", options)
43
42
  end
44
43
 
45
44
  # Returns the agent’s network interface info
@@ -75,8 +74,7 @@ module Wazuh
75
74
  # @option options [rx_dropped] :rx_dropped
76
75
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-interface-info-of-an-agent
77
76
  def netiface(agent_id, options = {})
78
- data = get "/syscollector/#{agent_id}/netiface", options
79
- data.items
77
+ offset_request('get', "/syscollector/#{agent_id}/netiface", options)
80
78
  end
81
79
 
82
80
  # Returns the agent’s network protocol info.
@@ -102,8 +100,7 @@ module Wazuh
102
100
  # Filters by dhcp.
103
101
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-protocol-info-of-an-agent
104
102
  def netproto(agent_id, options = {})
105
- data = get "/syscollector/#{agent_id}/netproto", options
106
- data.items
103
+ offset_request('get', "/syscollector/#{agent_id}/netproto", options)
107
104
  end
108
105
 
109
106
  # Returns the agent’s OS info.
@@ -141,8 +138,7 @@ module Wazuh
141
138
  # Filters by format.
142
139
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-packages-info
143
140
  def packages(agent_id, options = {})
144
- data = get "/syscollector/#{agent_id}/packages", options
145
- data.items
141
+ offset_request('get', "/syscollector/#{agent_id}/packages", options)
146
142
  end
147
143
 
148
144
  # Get ports info of an agent
@@ -175,8 +171,7 @@ module Wazuh
175
171
  # Filters by state.
176
172
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-ports-info-of-an-agent
177
173
  def ports(agent_id, options = {})
178
- data = get "/syscollector/#{agent_id}/ports", options
179
- data.items
174
+ offset_request('get', "/syscollector/#{agent_id}/ports", options)
180
175
  end
181
176
 
182
177
  # Get processes info
@@ -224,8 +219,7 @@ module Wazuh
224
219
  #
225
220
  # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-processes-info
226
221
  def processes(agent_id, options = {})
227
- data = get "/syscollector/#{agent_id}/processes", options
228
- data.items
222
+ offset_request('get', "/syscollector/#{agent_id}/processes", options)
229
223
  end
230
224
  end
231
225
  end
@@ -18,6 +18,18 @@ module Wazuh
18
18
  request(:delete, path, options)
19
19
  end
20
20
 
21
+ def offset_request(method, path, options = {})
22
+ items = []
23
+ data = send(method, path, options)
24
+ 0.step(data.totalItems, 500) { |offset|
25
+ options[:offset] = offset
26
+ d = send(method, path, options)
27
+ items.concat(d.items)
28
+ }
29
+
30
+ items
31
+ end
32
+
21
33
  private
22
34
 
23
35
  def request(method, path, options)
data/lib/wazuh/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Wazuh
3
- VERSION = '0.2.4'
3
+ VERSION = '0.2.5'
4
4
  end
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.require_paths = ["lib"]
36
36
 
37
37
  spec.add_development_dependency "bundler", "~> 2.1.4"
38
- spec.add_development_dependency "rake", "~> 10.0"
38
+ spec.add_development_dependency "rake", ">= 12.3.3"
39
39
  spec.add_development_dependency "rspec", "~> 3.0"
40
40
  spec.add_development_dependency "vcr"
41
41
  spec.add_development_dependency "webmock"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wazuh-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - mrtc0
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2020-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 12.3.3
34
34
  type: :development
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: '10.0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement