Sha256: 68c66c7bad879e18b83fa1209ae62cd74dafcd5ec644aff077059e21e3c74737

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

require 'nvd/json_feeds/schema/impact/base_metric_v2'
require 'nvd/json_feeds/schema/impact/base_metric_v3'

module NVD
  module JSONFeeds
    module Schema
      #
      # Represents the `"impact"` value.
      #
      class Impact

        # The base metric V3.
        #
        # @return [BaseMetricV3, nil]
        attr_reader :base_metric_v3

        # The base metric V2.
        #
        # @return [BaseMetricV2, nil]
        attr_reader :base_metric_v2

        #
        # Initializes the impact object.
        #
        # @param [BaseMetricV3, nil] base_metric_v3
        #   The parsed `"baseMetricV3"` object.
        #
        # @param [BaseMetricV2, nil] base_metric_v2
        #   The parsed `"baseMetricV3"` object.
        #
        def initialize(base_metric_v3: nil, base_metric_v2: nil)
          @base_metric_v3 = base_metric_v3
          @base_metric_v2 = base_metric_v2
        end

        #
        # Maps the parsed JSON to a Symbol Hash for {#initialize}.
        #
        # @param [Hash{String => Object}] json
        #   The parsed JSON.
        #
        # @return [Hash{Symbol => Object}]
        #   The Symbol Hash.
        #
        def self.from_json(json)
          {
            base_metric_v3: if (base_metric_v3 = json['baseMetricV3'])
                              BaseMetricV3.load(base_metric_v3)
                            end,

            base_metric_v2: if (base_metric_v2 = json['baseMetricV2'])
                              BaseMetricV2.load(base_metric_v2)
                            end
          }
        end

        #
        # Loads the impact object from the parsed JSON.
        #
        # @param [Hash{String => Object}] json
        #   The parsed JSON.
        #
        # @return [Impact]
        #   The loaded impact object.
        #
        def self.load(json)
          new(**from_json(json))
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nvd-json_feeds-0.1.0 lib/nvd/json_feeds/schema/impact.rb