class CVESchema::CVE::Impact

Attributes

cvss_v2[R]

@return [CVSSv2, nil]

cvss_v3[R]

@return [CVSSv3, nil]

cvssv2[R]

@return [CVSSv2, nil]

cvssv3[R]

@return [CVSSv3, nil]

Public Class Methods

from_json(json) click to toggle source

Maps the parsed JSON to a Symbol Hash for {#initialize}.

@param [Hash{String => Object}] json

The parsed JSON.

@return [Hash{Symbol => Object}]

The mapped Symbol Hash.

@api semipublic

# File lib/cve_schema/cve/impact.rb, line 43
def self.from_json(json)
  # HACK: the "impact" value is often an Array containing a single Hash
  hash = case json
         when Hash  then json
         when Array then json[0]
         else
           raise(InvalidJSON,'"impact" is neither a Hash or Array')
         end

  {
    cvssv2: hash['cvssv2'] && CVSSv2.load(hash['cvssv2']),
    cvssv3: hash['cvssv3'] && CVSSv3.load(hash['cvssv3'])
  }
end
load(json) click to toggle source

Loads the impact object from the parsed JSON.

@param [Hash{String => Object}] json

The parsed JSON.

@return [Impact]

The loaded impact object.

@api semipublic

# File lib/cve_schema/cve/impact.rb, line 69
def self.load(json)
  new(**from_json(json))
end
new(cvssv2: nil, cvssv3: nil) click to toggle source

Initializes the impact object.

@param [CVSSv2, nil] cvssv2

The CVSSv2 object.

@param [CVSSv3, nil] cvssv3

The CVSSv3 object.
# File lib/cve_schema/cve/impact.rb, line 27
def initialize(cvssv2: nil, cvssv3: nil)
  @cvssv2 = cvssv2
  @cvssv3 = cvssv3
end