Class: CVE::Parser
- Inherits:
-
Object
- Object
- CVE::Parser
- Defined in:
- lib/cve_crawler/cve_parser.rb
Instance Attribute Summary collapse
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
Instance Method Summary collapse
- #extract_cve_identifier(title) ⇒ Object
- #filter(results) ⇒ Object
-
#initialize(filters = nil) ⇒ Parser
constructor
A new instance of Parser.
- #inspect ⇒ Object
- #parse(content) ⇒ Object
- #parse_item(item) ⇒ Object
- #parse_items(rss) ⇒ Object
- #parse_rss_feed(content) ⇒ Object
Constructor Details
#initialize(filters = nil) ⇒ Parser
Returns a new instance of Parser.
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/cve_crawler/cve_parser.rb', line 7 def initialize(filters=nil) @filters = [] @filters << CVE::Filter.new if filters.is_a?(Array) filters.each do |filter| @filters << filter end elsif filters @filters << filters end end |
Instance Attribute Details
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
20 21 22 |
# File 'lib/cve_crawler/cve_parser.rb', line 20 def filters @filters end |
Instance Method Details
#extract_cve_identifier(title) ⇒ Object
58 59 60 |
# File 'lib/cve_crawler/cve_parser.rb', line 58 def extract_cve_identifier(title) title.split(' ')[0] end |
#filter(results) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/cve_crawler/cve_parser.rb', line 62 def filter(results) filtered_contents = [] results.each do |result| result_ok = true @filters.each do |filter| result_ok = result_ok && !filter.filter(result) end filtered_contents << result if result_ok end filtered_contents end |
#inspect ⇒ Object
78 79 80 |
# File 'lib/cve_crawler/cve_parser.rb', line 78 def inspect "<CVE::Parser filters=#{@filters.inspect}>" end |
#parse(content) ⇒ Object
22 23 24 25 26 |
# File 'lib/cve_crawler/cve_parser.rb', line 22 def parse(content) results = parse_rss_feed(content) filter(results) end |
#parse_item(item) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/cve_crawler/cve_parser.rb', line 48 def parse_item(item) CVE::Vulnerability.new({ :identifier => extract_cve_identifier(item.title), :title => item.title, :link => item.link, :description => item.description, :date => item.date }) end |
#parse_items(rss) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/cve_crawler/cve_parser.rb', line 34 def parse_items(rss) items = [] if rss.nil? raise 'RSS object failed to parse, is it valid XML?' end rss.items.each do |item| items << parse_item(item) end items end |
#parse_rss_feed(content) ⇒ Object
28 29 30 31 32 |
# File 'lib/cve_crawler/cve_parser.rb', line 28 def parse_rss_feed(content) rss = RSS::Parser.parse(content) parse_items(rss) end |