Sha256: ffe4d2c7b087cbc01b6f2c1bfa2b046a059984226c0ff89ff7e1133c1f907c69

Contents?: true

Size: 1.97 KB

Versions: 4

Compression:

Stored size: 1.97 KB

Contents

# Copyright (c) 2021 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
# frozen_string_literal: true

require 'contrast/components/interface'
require 'contrast/utils/string_utils'

module Contrast
  module Api
    module Decorators
      # Used to decorate the {Contrast::Api::Dtm::ApplicationUpdate} protobuf
      # model so it can own some of the data massaging required for AppUpdate
      # dtm.
      module ApplicationUpdate
        include Contrast::Components::Interface
        access_component :config

        def self.included klass
          klass.extend(ClassMethods)
        end

        def append_library_update library_dtm_list
          library_dtm_list.each do |library_dtm|
            libraries[library_dtm.hash_code] = library_dtm
          end
        end

        # TS only allows you to report 500 routes per application
        def append_route_coverage_data route_coverage_dtms
          route_coverage_dtms.take(500).each do |route_coverage_dtm|
            routes << route_coverage_dtm
          end
        end

        def append_platform_version platform_version
          self.platform = Contrast::Api::Dtm::Platform.new if platform.nil?
          platform.major = platform_version.major
          platform.minor = platform_version.minor
          platform.build = platform_version.patch
        end

        # Used to add class methods to the ApplicationUpdate class on inclusion of the decorator
        module ClassMethods
          def build
            msg = new
            msg.append_route_coverage_data(Contrast::Agent.framework_manager.find_route_discovery_data)
            msg.append_platform_version(Contrast::Agent.framework_manager.platform_version)
            msg.append_library_update(Contrast::Agent::Inventory::DependencyAnalysis.instance.library_pb_list)
            msg
          end
        end
      end
    end
  end
end

Contrast::Api::Dtm::ApplicationUpdate.include(Contrast::Api::Decorators::ApplicationUpdate)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
contrast-agent-4.8.0 lib/contrast/api/decorators/application_update.rb
contrast-agent-4.7.0 lib/contrast/api/decorators/application_update.rb
contrast-agent-4.6.0 lib/contrast/api/decorators/application_update.rb
contrast-agent-4.5.0 lib/contrast/api/decorators/application_update.rb