lib/contrast/agent/assess/events/source_event.rb in contrast-agent-4.14.1 vs lib/contrast/agent/assess/events/source_event.rb in contrast-agent-5.0.0

- old
+ new

@@ -1,9 +1,10 @@ -# Copyright (c) 2021 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details. +# Copyright (c) 2022 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details. # frozen_string_literal: true require 'contrast/agent/assess/contrast_event' +require 'contrast/agent/reporting/reporting_events/trace_event_source' require 'contrast/utils/string_utils' module Contrast module Agent module Assess @@ -17,12 +18,17 @@ # @attr_reader source_name [String] the name of the source if it comes from a map-like entity # @attr_reader source_type [String] the TeamServer understood type of source; i.e. parameter class SourceEvent < Contrast::Agent::Assess::ContrastEvent attr_reader :request, :source_name, :source_type - def initialize policy_node, tagged, object, ret, args, source_type = nil, source_name = nil - super(policy_node, tagged, object, ret, args) + # @param event_data [Contrast::Agent::Assess::Events::EventData] + # @param source_type [String] the type of this source, from the + # source_node, or a KEY_TYPE if invoked for a map, + # @param source_name [String, nil] the name of this source, i.e. + # the key used to accessed if from a map or nil if a type like, + def initialize event_data, source_type = nil, source_name = nil + super(event_data) @source_type = source_type @source_name = source_name @request = Contrast::Agent::REQUEST_TRACKER.current&.request end @@ -57,9 +63,22 @@ dtm = Contrast::Api::Dtm::TraceEventSource.new dtm.type = forced_source_type dtm.name = forced_source_name dtm + end + + # Probably only for source events, but we'll go + # with source_type instead. java & .net support source_type + # in propagation events, so we'll future proof this + def build_event_source + # You can have a source w/o a name, but not w/o a type + return unless source_type + + trace_event_source = Contrast::Agent::Reporting::TraceEventSource.new + trace_event_source.type = forced_source_type + trace_event_source.name = forced_source_name + trace_event_source end # We have to do a little work to figure out what our TS appropriate # target is. To break this down, the logic is as follows: # 1) I'll set the event's source and target to TS values.