class CVE::Vulnerability
Constants
- SOFTWARE_EXTRACT_REGEXP
Attributes
affected_software[R]
date[R]
description[R]
identifier[R]
link[R]
title[R]
Public Class Methods
new(data)
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 5 def initialize(data) unless data.instance_of?(Hash) raise 'CVE Vulnerability needs to be initialized with a hash' end if malformed?(data) raise 'CVE Vulnerability data is malformed' end @identifier = data[:identifier] @date = data[:date] @description = data[:description] @link = data[:link] @title = data[:title] @affected_software = extract_software_from_title(data[:title]) end
Public Instance Methods
affected_count()
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 39 def affected_count @affected_software.nil? ? 0 : @affected_software.count end
equal?(cve_item, strict=false)
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 43 def equal?(cve_item, strict=false) return false unless cve_item.is_a?(Vulnerability) if strict return @identifier == cve_item.identifier && @link == cve_item.link && @date.utc.iso8601 == cve_item.date.utc.iso8601 && @title == cve_item.title && @description == cve_item.description end @identifier == cve_item.identifier && @link == cve_item.link end
extract_software_from_title(title)
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 29 def extract_software_from_title(title) software = [] title.scan(SOFTWARE_EXTRACT_REGEXP) do |scan| software << scan[0] end software.count == 0 ? nil : software end
inspect()
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 69 def inspect "#<CVE::Vulnerability id=#{@identifier} affected=#{affected_count}>" end
malformed?(data)
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 24 def malformed?(data) !(data.has_key?(:identifier) && data.has_key?(:date) && data.has_key?(:description) && data.has_key?(:link) && data.has_key?(:title)) end
to_hash()
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 58 def to_hash { :identifier => @identifier, :title => @title, :link => @link, :description => @description, :date => @date, :affected_software => @affected_software } end
to_s()
click to toggle source
# File lib/cve_crawler/cve_vulnerability.rb, line 54 def to_s "#{@title} - #{@link}" end