Module: NVD::Feed

Defined in:
lib/nvd/feed.rb,
lib/nvd/feed/cpe.rb,
lib/nvd/feed/cve.rb

Defined Under Namespace

Modules: CPE, CVE

Class Method Summary collapse

Class Method Details

.etagsObject



8
9
10
# File 'lib/nvd/feed.rb', line 8

def self.etags
  @@etags
end

.feedsObject



39
40
41
# File 'lib/nvd/feed.rb', line 39

def self.feeds
  @@feeds
end

.fetch(tag, etag = nil) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/nvd/feed.rb', line 17

def self.fetch(tag,etag=nil)
  feed = @@feeds.detect {|f| f::LOCATIONS.any? {|k,v| k == tag || v == tag}}
  location = feed::LOCATIONS.detect {|k,v| k == tag || v == tag}
  return nil unless location
  tag = location[0]
  etag = (etags[tag] || "") unless etag
  puts "Fetching entries for #{tag} ..."
  {tag => feed.fetch(tag,etag)}
end

.fetch!(tag, etag = nil) ⇒ Object



12
13
14
15
# File 'lib/nvd/feed.rb', line 12

def self.fetch!(tag,etag=nil)
  etags.delete tag
  fetch(tag, etag)
end

.gunzip(gdata) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/nvd/feed.rb', line 27

def self.gunzip(gdata)
   zi = Zlib::Inflate.new(Zlib::MAX_WBITS + 32)
   begin
     return zi.inflate(gdata)
	rescue Zlib::DataError => e
	  raise "please provide gzipped data"
	rescue => e
	  raise e
end

end