class Sqreen::Signals::SignalsSubmissionStrategy

see also Sqreen::Legacy::OldEventSubmissionStrategy usage in Sqreen:Session

Public Instance Methods

post_attack(_attack) click to toggle source

@param _attack [Sqreen::Attack] XXX: unused

# File lib/sqreen/signals/signals_submission_strategy.rb, line 33
def post_attack(_attack)
  raise NotImplementedError
end
post_batch(events) click to toggle source
# File lib/sqreen/signals/signals_submission_strategy.rb, line 56
def post_batch(events)
  guarded 'Failed to serialize or submit batch of events' do
    batch = Conversions.convert_batch(events)
    batch.each { |sig_or_trace| append_sanitizing_filter(sig_or_trace) }
    client.report_batch(batch)
  end
end
post_metrics(metrics) click to toggle source

@param [Array<Sqreen::AggregatedMetric>] metrics

# File lib/sqreen/signals/signals_submission_strategy.rb, line 20
def post_metrics(metrics)
  return if metrics.nil? || metrics.empty?

  guarded 'Failed to serialize or submit aggregated metrics' do
    batch = metrics.map do |m|
      Conversions.convert_metric_sample(m)
    end
    client.report_batch(batch)
  end
end
post_request_record(request_record) click to toggle source

@param request_record [Sqreen::RequestRecord]

# File lib/sqreen/signals/signals_submission_strategy.rb, line 38
def post_request_record(request_record)
  guarded 'Failed to serialize or submit request record' do
    trace = Conversions.convert_req_record(request_record)
    append_sanitizing_filter(trace)
    client.report_trace(trace)
  end
end
post_sqreen_exception(exception) click to toggle source

Post an exception to Sqreen for analysis @param exception [RemoteException] Exception and context to be sent over

# File lib/sqreen/signals/signals_submission_strategy.rb, line 48
def post_sqreen_exception(exception)
  guarded 'Failed to serialize or submit exception', false do
    data = Conversions.convert_exception(exception)
    append_sanitizing_filter(data)
    client.report_signal(data)
  end
end

Private Instance Methods

append_sanitizing_filter(sig_or_trace) click to toggle source
# File lib/sqreen/signals/signals_submission_strategy.rb, line 66
def append_sanitizing_filter(sig_or_trace)
  sig_or_trace.append_to_h_filter Kit::StringSanitizer.method(:sanitize)
end
client() click to toggle source
# File lib/sqreen/signals/signals_submission_strategy.rb, line 78
def client
  Sqreen::Kit.auth_signals_client
end
guarded(msg, report = true) { || ... } click to toggle source

we don't want exceptions to propagate and kill the worker thread

# File lib/sqreen/signals/signals_submission_strategy.rb, line 71
def guarded(msg, report = true)
  yield
rescue StandardError => e
  logger.warn "#{msg}: #{e.message}\n#{e.backtrace.map { |x| "  #{x}" }.join("\n")}"
  post_sqreen_exception(RemoteException.new(e)) if report
end