class YAVDB::Advisory

TODO: Enable `Style/StructInheritance` - check `attr_reader:` or `initialize` method

Public Class Methods

load(path) click to toggle source
# File lib/yavdb/dtos/advisory.rb, line 44
def self.load(path)
  data = YAML.load_file(path)

  raise("Advisory data in #{path.dump} was not an Array") unless data.is_a?(Array)

  data.map do |advisory|
    raise("Advisory data in #{path.dump} was not a Hash") unless advisory.is_a?(Hash)

    new(
      advisory['id'],
      advisory['title'],
      advisory['description'],
      advisory['affected_package'],
      advisory['vulnerable_versions'],
      advisory['unaffected_versions'],
      advisory['patched_versions'],
      advisory['severity'],
      advisory['package_manager'],
      advisory['cve'],
      advisory['cwe'],
      advisory['osvdb'],
      advisory['cvss_v2_vector'],
      advisory['cvss_v2_score'],
      advisory['cvss_v3_vector'],
      advisory['cvss_v3_score'],
      advisory['disclosed_date'],
      advisory['created_date'],
      advisory['last_modified_date'],
      advisory['credit'],
      advisory['references'],
      advisory['source_url']
    )
  end
end

Public Instance Methods

to_json(*args) click to toggle source
# File lib/yavdb/dtos/advisory.rb, line 97
def to_json(*args)
  to_map.to_json(*args)
end
to_map() click to toggle source
# File lib/yavdb/dtos/advisory.rb, line 79
def to_map
  map = {}
  members.each do |m|
    if !self[m] ||
       (self[m].is_a?(String) && self[m].empty?) ||
       (self[m].is_a?(Array) && self[m].none?)
      next
    elsif self[m].is_a?(Struct)
      map[m.to_s] = self[m].to_map
    elsif self[m].is_a?(Array)
      map[m.to_s] = self[m].sort_by { |c| c.to_s.downcase }
    else
      map[m.to_s] = self[m]
    end
  end
  map
end
to_yaml(*args) click to toggle source
# File lib/yavdb/dtos/advisory.rb, line 101
def to_yaml(*args)
  to_map.to_yaml(*args)
end