nvd_feed_api 0.2.1.yank → 0.3.0

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
- SHA1:
3
- metadata.gz: 6787ce3cf4a7b489e422d52f0be48642ea091e60
4
- data.tar.gz: 5e41fab281567c47a8323997f6b6ef4e5759320a
2
+ SHA256:
3
+ metadata.gz: a5b514ce502cdd7ed0c110fc51e834735f0431d18724ce805a7d43ab6c48573b
4
+ data.tar.gz: 2ad857a72403943feee5a60f3a7ac8e8f642eb96e4ebb5956d2cdaeb3d635a46
5
5
  SHA512:
6
- metadata.gz: c30c2411484e44cd49878ff6396ca21cf9fb172ec095e2b48bd15ced3ba05d245df89917eceb10f6e00331794462898aa4b02f1f66241ba0e8886ed24beaf55a
7
- data.tar.gz: 86eb79764eddc1d8ffdbf76f3f105d819c4482b64fedbedf597ac86ae54858c97cefc2155bf5fa3e0f267d1a6e0ceb5c0ead1036312e5b8318a0a5ac08f650ca
6
+ metadata.gz: 830a36b97968d09491bd7827393e261aff2ec6fc410167cfcada0848e86809979c01a7c7c9bbfcfa6cf86b0a357279b26cb45719ceefde01f2e2456d2c03f272
7
+ data.tar.gz: dab48f73efd733dd71c94ad619289727c625526b6099b09906203ed19b776aa2d97b21868cf1b10a4bba095f6d4a26a06da7c23cacc4f6776eb2cc5486f9d5c7
data/.gitignore CHANGED
@@ -50,4 +50,4 @@ build-iPhoneSimulator/
50
50
  .rvmrc
51
51
 
52
52
  # do not check Gemfile.lock fror gems
53
- Gemfile.lock
53
+ #Gemfile.lock
@@ -1,40 +1,47 @@
1
1
  # Official language image. Look for the different tagged releases at:
2
2
  # https://hub.docker.com/r/library/ruby/tags/
3
3
 
4
+ # Caching: https://docs.gitlab.com/ee/ci/caching/#caching-ruby-dependencies
4
5
  cache:
6
+ key: ${CI_COMMIT_REF_SLUG}
5
7
  paths:
6
8
  - vendor/ruby # cache gems in between builds
7
9
 
8
10
  before_script:
9
11
  - ruby -v # Print out ruby version for debugging
10
- - gem install bundler --no-ri --no-rdoc # Bundler is not installed with the image
12
+ - gem install bundler --no-document # Bundler is not installed with the image
11
13
  # install nproc (coreutils) for bundle -j
12
14
  # install git for building the gemspec
13
15
  # install make, gcc for building gem native extension (commonmarker)
14
16
  # libc-dev for musl-dev dependency (stdlib.h) needed by gcc
15
17
  - apk --no-cache add coreutils git make gcc libc-dev
16
18
  - bundle install -j $(nproc) --path vendor # Install dependencies into ./vendor/ruby
17
- - rake install # install the gem
19
+ - bundle exec rake install # install the gem
18
20
 
19
- test:2.4:
21
+ # Anchors: https://docs.gitlab.com/ee/ci/yaml/README.html#anchors
22
+ .test_template: &job_definition
20
23
  stage: test
21
- image: ruby:2.4-alpine
22
24
  script:
23
- - rubocop
24
- - rake test
25
+ - bundle exec rubocop
26
+ - bundle exec rake test
27
+
28
+ test:2.4:
29
+ <<: *job_definition
30
+ image: ruby:2.4-alpine
25
31
 
26
32
  test:2.5:
27
- stage: test
33
+ <<: *job_definition
28
34
  image: ruby:2.5-alpine
29
- script:
30
- - rubocop
31
- - rake test
35
+
36
+ test:2.6:
37
+ <<: *job_definition
38
+ image: ruby:2.6-alpine
32
39
 
33
40
  pages:
34
41
  stage: deploy
35
42
  image: ruby:2.4-alpine
36
43
  script:
37
- - yard doc
44
+ - bundle exec yard doc
38
45
  - mkdir public
39
46
  - mv doc/* public/
40
47
  artifacts:
@@ -1,6 +1,9 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.4
3
3
 
4
+ Layout/AlignHash:
5
+ EnforcedHashRocketStyle: table
6
+
4
7
  # Rubocop is too stupid too see that the variable is used
5
8
  Lint/UselessAssignment:
6
9
  Enabled: false
@@ -0,0 +1,64 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ nvd_feed_api (0.3.0)
5
+ archive-zip (~> 0.11)
6
+ nokogiri (~> 1.10)
7
+ oj (>= 3.7.8, < 4)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ archive-zip (0.11.0)
13
+ io-like (~> 0.3.0)
14
+ ast (2.4.0)
15
+ commonmarker (0.18.2)
16
+ ruby-enum (~> 0.5)
17
+ concurrent-ruby (1.1.4)
18
+ github-markup (3.0.2)
19
+ i18n (1.5.3)
20
+ concurrent-ruby (~> 1.0)
21
+ io-like (0.3.0)
22
+ jaro_winkler (1.5.2)
23
+ mini_portile2 (2.4.0)
24
+ minitest (5.11.3)
25
+ nokogiri (1.10.1)
26
+ mini_portile2 (~> 2.4.0)
27
+ oj (3.7.8)
28
+ parallel (1.13.0)
29
+ parser (2.6.0.0)
30
+ ast (~> 2.4.0)
31
+ powerpack (0.1.2)
32
+ rainbow (3.0.0)
33
+ rake (12.3.2)
34
+ redcarpet (3.4.0)
35
+ rubocop (0.63.0)
36
+ jaro_winkler (~> 1.5.1)
37
+ parallel (~> 1.10)
38
+ parser (>= 2.5, != 2.5.1.1)
39
+ powerpack (~> 0.1)
40
+ rainbow (>= 2.2.2, < 4.0)
41
+ ruby-progressbar (~> 1.7)
42
+ unicode-display_width (~> 1.4.0)
43
+ ruby-enum (0.7.2)
44
+ i18n
45
+ ruby-progressbar (1.10.0)
46
+ unicode-display_width (1.4.1)
47
+ yard (0.9.16)
48
+
49
+ PLATFORMS
50
+ ruby
51
+
52
+ DEPENDENCIES
53
+ bundler (~> 2.0)
54
+ commonmarker (~> 0.18)
55
+ github-markup (~> 3.0)
56
+ minitest (~> 5.11)
57
+ nvd_feed_api!
58
+ rake (~> 12.3)
59
+ redcarpet (~> 3.4)
60
+ rubocop (~> 0.63)
61
+ yard (~> 0.9)
62
+
63
+ BUNDLED WITH
64
+ 2.0.1
@@ -31,7 +31,7 @@ class NVDFeedScraper
31
31
 
32
32
  # Scrap / parse the website to get the feeds and fill the {#feeds} attribute.
33
33
  # @note {#scrap} need to be called only once but can be called again to update if the NVD feed page changed.
34
- # @return [Integer] +0+ when there is no error.
34
+ # @return [Integer] Number of scrapped feeds.
35
35
  def scrap
36
36
  uri = URI(@url)
37
37
  html = Net::HTTP.get(uri)
@@ -46,6 +46,7 @@ class NVDFeedScraper
46
46
  zip = tr.css('+ tr + tr > td > a').attr('href').value
47
47
  @feeds.push(Feed.new(name, updated, meta, gz, zip))
48
48
  end
49
+ return @feeds.size
49
50
  end
50
51
 
51
52
  # Return feeds. Can only be called after {#scrap}.
@@ -72,6 +73,7 @@ class NVDFeedScraper
72
73
  # @see https://nvd.nist.gov/vuln/data-feeds
73
74
  def feeds(*arg_feeds)
74
75
  raise 'call scrap method before using feeds method' if @feeds.nil?
76
+
75
77
  return_value = nil
76
78
  if arg_feeds.empty?
77
79
  return_value = @feeds
@@ -83,6 +85,7 @@ class NVDFeedScraper
83
85
  # if nothing found return nil
84
86
  elsif arg_feeds[0].is_a?(Array)
85
87
  raise 'one of the provided arguments is not a String' unless arg_feeds[0].all? { |x| x.is_a?(String) }
88
+
86
89
  # Sorting CVE can allow us to parse quicker
87
90
  # Upcase to be sure include? works
88
91
  # Does not use map(&:upcase) to preserve CVE-Recent and CVE-Modified
@@ -114,6 +117,7 @@ class NVDFeedScraper
114
117
  # scraper.available_feeds => ["CVE-Modified", "CVE-Recent", "CVE-2017", "CVE-2016", "CVE-2015", "CVE-2014", "CVE-2013", "CVE-2012", "CVE-2011", "CVE-2010", "CVE-2009", "CVE-2008", "CVE-2007", "CVE-2006", "CVE-2005", "CVE-2004", "CVE-2003", "CVE-2002"]
115
118
  def available_feeds
116
119
  raise 'call scrap method before using available_feeds method' if @feeds.nil?
120
+
117
121
  feed_names = []
118
122
  @feeds.each do |feed| # feed is an objet
119
123
  feed_names.push(feed.name)
@@ -146,9 +150,11 @@ class NVDFeedScraper
146
150
  def cve(*arg_cve)
147
151
  return_value = nil
148
152
  raise 'no argument provided, 1 or more expected' if arg_cve.empty?
153
+
149
154
  if arg_cve.length == 1
150
155
  if arg_cve[0].is_a?(String)
151
156
  raise 'bad CVE name' unless /^CVE-[0-9]{4}-[0-9]{4,}$/i.match?(arg_cve[0])
157
+
152
158
  year = /^CVE-([0-9]{4})-[0-9]{4,}$/i.match(arg_cve[0]).captures[0]
153
159
  matched_feed = nil
154
160
  feed_names = available_feeds
@@ -163,12 +169,14 @@ class NVDFeedScraper
163
169
  # CVE-2002 feed (the 1st one) contains CVE from 1999 to 2002
164
170
  matched_feed = 'CVE-2002' if matched_feed.nil? && ('1999'..'2001').to_a.include?(year)
165
171
  raise "bad CVE year in #{arg_cve}" if matched_feed.nil?
172
+
166
173
  f = feeds(matched_feed)
167
174
  f.json_pull
168
175
  return_value = f.cve(arg_cve[0])
169
176
  elsif arg_cve[0].is_a?(Array)
170
177
  raise 'one of the provided arguments is not a String' unless arg_cve[0].all? { |x| x.is_a?(String) }
171
178
  raise 'bad CVE name' unless arg_cve[0].all? { |x| /^CVE-[0-9]{4}-[0-9]{4,}$/i.match?(x) }
179
+
172
180
  return_value = []
173
181
  # Sorting CVE can allow us to parse quicker
174
182
  # Upcase to be sure include? works
@@ -185,6 +193,7 @@ class NVDFeedScraper
185
193
  # So virtually add those feed...
186
194
  feed_names.merge(virtual_feeds)
187
195
  raise 'unexisting CVE year was provided in some CVE' unless feeds_to_match.subset?(feed_names)
196
+
188
197
  matched_feeds = feeds_to_match.intersection(feed_names)
189
198
  # and now that the intersection is done remove those virtual feeds and add CVE-2002 instead if needed
190
199
  unless matched_feeds.intersection(virtual_feeds.to_set).empty?
@@ -235,6 +244,7 @@ class NVDFeedScraper
235
244
  def update_feeds(*arg_feed)
236
245
  return_value = false
237
246
  raise 'no argument provided, 1 or more expected' if arg_feed.empty?
247
+
238
248
  scrap
239
249
  if arg_feed.length == 1
240
250
  if arg_feed[0].is_a?(Feed)
@@ -184,6 +184,7 @@ class NVDFeedScraper
184
184
  # Verify hash integrity
185
185
  computed_h = Digest::SHA256.file(@json_file)
186
186
  raise "File corruption: #{@json_file}" unless meta.sha256.casecmp(computed_h.hexdigest).zero?
187
+
187
188
  # update data
188
189
  doc = Oj::Doc.open(File.read(@json_file))
189
190
  @data_type = doc.fetch('/CVE_data_type')
@@ -223,11 +224,14 @@ class NVDFeedScraper
223
224
  def cve(*arg_cve)
224
225
  raise 'json_file is nil, it needs to be populated with json_pull' if @json_file.nil?
225
226
  raise "json_file (#{@json_file}) doesn't exist" unless File.file?(@json_file)
227
+
226
228
  return_value = nil
227
229
  raise 'no argument provided, 1 or more expected' if arg_cve.empty?
230
+
228
231
  if arg_cve.length == 1
229
232
  if arg_cve[0].is_a?(String)
230
233
  raise "bad CVE name (#{arg_cve[0]})" unless /^CVE-[0-9]{4}-[0-9]{4,}$/i.match?(arg_cve[0])
234
+
231
235
  doc = Oj::Doc.open(File.read(@json_file))
232
236
  # Quicker than doc.fetch('/CVE_Items').size
233
237
  (1..@data_number_of_cves).each do |i|
@@ -244,6 +248,7 @@ class NVDFeedScraper
244
248
  cves_to_find = arg_cve[0].map(&:upcase).sort
245
249
  raise 'one of the provided arguments is not a String' unless cves_to_find.all? { |x| x.is_a?(String) }
246
250
  raise 'bad CVE name' unless cves_to_find.all? { |x| /^CVE-[0-9]{4}-[0-9]{4,}$/i.match?(x) }
251
+
247
252
  doc = Oj::Doc.open(File.read(@json_file))
248
253
  # Quicker than doc.fetch('/CVE_Items').size
249
254
  (1..@data_number_of_cves).each do |i|
@@ -273,6 +278,7 @@ class NVDFeedScraper
273
278
  def available_cves
274
279
  raise 'json_file is nil, it needs to be populated with json_pull' if @json_file.nil?
275
280
  raise "json_file (#{@json_file}) doesn't exist" unless File.file?(@json_file)
281
+
276
282
  doc = Oj::Doc.open(File.read(@json_file))
277
283
  # Quicker than doc.fetch('/CVE_Items').size
278
284
  cve_names = []
@@ -290,6 +296,7 @@ class NVDFeedScraper
290
296
  # 'CVE-2007'
291
297
  def name=(arg_name)
292
298
  raise "name (#{arg_name}) is not a string" unless arg_name.is_a?(String)
299
+
293
300
  @name = arg_name
294
301
  end
295
302
 
@@ -299,6 +306,7 @@ class NVDFeedScraper
299
306
  # '10/19/2017 3:27:02 AM -04:00'
300
307
  def updated=(arg_updated)
301
308
  raise "updated date (#{arg_updated}) is not a string" unless arg_updated.is_a?(String)
309
+
302
310
  @updated = arg_updated
303
311
  end
304
312
 
@@ -308,6 +316,7 @@ class NVDFeedScraper
308
316
  # 'https://static.nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-2007.meta'
309
317
  def meta_url=(arg_meta_url)
310
318
  raise "meta_url (#{arg_meta_url}) is not a string" unless arg_meta_url.is_a?(String)
319
+
311
320
  @meta_url = arg_meta_url
312
321
  end
313
322
 
@@ -317,6 +326,7 @@ class NVDFeedScraper
317
326
  # 'https://static.nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-2007.json.gz'
318
327
  def gz_url=(arg_gz_url)
319
328
  raise "gz_url (#{arg_gz_url}) is not a string" unless arg_gz_url.is_a?(String)
329
+
320
330
  @gz_url = arg_gz_url
321
331
  end
322
332
 
@@ -326,6 +336,7 @@ class NVDFeedScraper
326
336
  # 'https://static.nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-2007.json.zip'
327
337
  def zip_url=(arg_zip_url)
328
338
  raise "zip_url (#{arg_zip_url}) is not a string" unless arg_zip_url.is_a?(String)
339
+
329
340
  @zip_url = arg_zip_url
330
341
  end
331
342
 
@@ -362,6 +373,7 @@ class NVDFeedScraper
362
373
  unless skip_download
363
374
  res = Net::HTTP.get_response(uri)
364
375
  raise "#{file_url} ended with #{res.code} #{res.message}" unless res.is_a?(Net::HTTPSuccess)
376
+
365
377
  File.open(destination_file, 'wb') do |file|
366
378
  file.write(res.body)
367
379
  end
@@ -376,6 +388,7 @@ class NVDFeedScraper
376
388
  def update!(fresh_feed)
377
389
  return_value = false
378
390
  raise "#{fresh_feed} is not a Feed" unless fresh_feed.is_a?(Feed)
391
+
379
392
  # update attributes
380
393
  if updated != fresh_feed.updated
381
394
  self.name = fresh_feed.name
@@ -91,6 +91,7 @@ class NVDFeedScraper
91
91
  end
92
92
 
93
93
  raise "Can't parse if the URL is empty" if @url.nil?
94
+
94
95
  uri = URI(@url)
95
96
 
96
97
  meta = Net::HTTP.get(uri)
@@ -1,3 +1,3 @@
1
1
  module NvdFeedApi
2
- VERSION = '0.2.1.yank'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = 'nvd_feed_api'
7
7
  s.version = NvdFeedApi::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
- s.date = '2018-05-02'
9
+ s.date = '2018-01-06'
10
10
  s.summary = 'API for NVD CVE feeds'
11
11
  s.description = 'A simple API for NVD CVE feeds'
12
12
  s.authors = ['Alexandre ZANNI']
@@ -31,16 +31,16 @@ Gem::Specification.new do |s|
31
31
 
32
32
  s.required_ruby_version = '~> 2.4'
33
33
 
34
- s.add_dependency('archive-zip', '~> 0.10')
35
- s.add_dependency('nokogiri', '~> 1.8')
36
- s.add_dependency('oj', '~> 3.3')
34
+ s.add_dependency('archive-zip', '~> 0.11')
35
+ s.add_dependency('nokogiri', '~> 1.10')
36
+ s.add_dependency('oj', '>= 3.7.8', '<4')
37
37
 
38
- s.add_development_dependency('bundler', '~> 1.15')
39
- s.add_development_dependency('commonmarker', '~> 0.17') # for GMF support in YARD
40
- s.add_development_dependency('github-markup', '~> 1.6') # for GMF support in YARD
41
- s.add_development_dependency('minitest', '~> 5.10')
38
+ s.add_development_dependency('bundler', '~> 2.0')
39
+ s.add_development_dependency('commonmarker', '~> 0.18') # for GMF support in YARD
40
+ s.add_development_dependency('github-markup', '~> 3.0') # for GMF support in YARD
41
+ s.add_development_dependency('minitest', '~> 5.11')
42
42
  s.add_development_dependency('rake', '~> 12.3')
43
43
  s.add_development_dependency('redcarpet', '~> 3.4') # for GMF support in YARD
44
- s.add_development_dependency('rubocop', '~> 0.51')
44
+ s.add_development_dependency('rubocop', '~> 0.63')
45
45
  s.add_development_dependency('yard', '~> 0.9')
46
46
  end
@@ -1,8 +1,18 @@
1
+ # [0.3.0] - 22 January 2019
2
+
3
+ [0.3.0]: https://gitlab.com/noraj/nvd_api/tags/v0.3.0
4
+
5
+ - update dependencies: updated gemspec, ruby 2.6 support, fix gem doc flag, fix oj crash (seg fault)
6
+ - Gemfile.lock: now Gemfile.lock is not ignored anymore
7
+ - gitlab-ci: add ruby 2.6 test, add caching key, and anchors for better reuse, always use bundle
8
+ - NVDFeedScraper `scrap` method: change return value
9
+ - rubocop: fix lint
10
+
1
11
  # [0.2.1] - 2 May 2018
2
12
 
3
13
  [0.2.1]: https://gitlab.com/noraj/nvd_api/tags/v0.2.1
4
14
 
5
- - Gitlab-CI: test vith ruby 2.4.x and 2.5.x
15
+ - Gitlab-CI: test with ruby 2.4.x and 2.5.x
6
16
  - style: fix Style/ExpandPathArguments cop
7
17
  - security: fix Security/Open cop, protect from pipe command injection
8
18
  - test: fix NVD URL after NVD changed it
@@ -9,7 +9,7 @@ class NVDAPITest < Minitest::Test
9
9
  end
10
10
 
11
11
  def test_scraper_scrap
12
- assert_equal(0, @s.scrap, 'scrap method return nothing')
12
+ assert_operator(0, :<, @s.scrap, 'scrap method returns nothing')
13
13
  end
14
14
 
15
15
  def test_scraper_feeds_noarg
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nvd_feed_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1.yank
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre ZANNI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-02 00:00:00.000000000 Z
11
+ date: 2018-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: archive-zip
@@ -16,98 +16,104 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.10'
19
+ version: '0.11'
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: '0.10'
26
+ version: '0.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.8'
33
+ version: '1.10'
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: '1.8'
40
+ version: '1.10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: oj
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.7.8
48
+ - - "<"
46
49
  - !ruby/object:Gem::Version
47
- version: '3.3'
50
+ version: '4'
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
- - - "~>"
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 3.7.8
58
+ - - "<"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.3'
60
+ version: '4'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: bundler
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '1.15'
67
+ version: '2.0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '1.15'
74
+ version: '2.0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: commonmarker
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '0.17'
81
+ version: '0.18'
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '0.17'
88
+ version: '0.18'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: github-markup
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '1.6'
95
+ version: '3.0'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '1.6'
102
+ version: '3.0'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: minitest
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '5.10'
109
+ version: '5.11'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
114
  - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '5.10'
116
+ version: '5.11'
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: rake
113
119
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +148,14 @@ dependencies:
142
148
  requirements:
143
149
  - - "~>"
144
150
  - !ruby/object:Gem::Version
145
- version: '0.51'
151
+ version: '0.63'
146
152
  type: :development
147
153
  prerelease: false
148
154
  version_requirements: !ruby/object:Gem::Requirement
149
155
  requirements:
150
156
  - - "~>"
151
157
  - !ruby/object:Gem::Version
152
- version: '0.51'
158
+ version: '0.63'
153
159
  - !ruby/object:Gem::Dependency
154
160
  name: yard
155
161
  requirement: !ruby/object:Gem::Requirement
@@ -182,6 +188,7 @@ files:
182
188
  - ".rubocop.yml"
183
189
  - ".yardopts"
184
190
  - Gemfile
191
+ - Gemfile.lock
185
192
  - LICENSE.txt
186
193
  - README.md
187
194
  - Rakefile
@@ -220,12 +227,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
227
  version: '2.4'
221
228
  required_rubygems_version: !ruby/object:Gem::Requirement
222
229
  requirements:
223
- - - ">"
230
+ - - ">="
224
231
  - !ruby/object:Gem::Version
225
- version: 1.3.1
232
+ version: '0'
226
233
  requirements: []
227
- rubyforge_project:
228
- rubygems_version: 2.6.14
234
+ rubygems_version: 3.0.1
229
235
  signing_key:
230
236
  specification_version: 4
231
237
  summary: API for NVD CVE feeds