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.