class Atatus::Transport::Serializers::SpanSerializer::ContextSerializer

@api private

Public Instance Methods

build(context) click to toggle source

rubocop:disable Metrics/CyclomaticComplexity

# File lib/atatus/transport/serializers/span_serializer.rb, line 54
def build(context)
  return unless context

  base = {}

  base[:tags] = mixed_object(context.labels) if context.labels.any?
  base[:sync] = context.sync unless context.sync.nil?
  base[:db] = build_db(context.db) if context.db
  base[:http] = build_http(context.http) if context.http

  if context.destination
    base[:destination] = build_destination(context.destination)
  end

  base
end

Private Instance Methods

build_db(db) click to toggle source

rubocop:enable Metrics/CyclomaticComplexity

# File lib/atatus/transport/serializers/span_serializer.rb, line 74
def build_db(db)
  {
    instance: db.instance,
    statement: Util.truncate(db.statement, max_length: 10_000),
    type: db.type,
    user: db.user,
    rows_affected: db.rows_affected
  }
end
build_destination(destination) click to toggle source
# File lib/atatus/transport/serializers/span_serializer.rb, line 92
def build_destination(destination)
  {
    service: {
      name: keyword_field(destination.name),
      resource: keyword_field(destination.resource),
      type: keyword_field(destination.type)
    },
    address: keyword_field(destination.address),
    port: destination.port
  }
end
build_http(http) click to toggle source
# File lib/atatus/transport/serializers/span_serializer.rb, line 84
def build_http(http)
  {
    url: http.url,
    status_code: http.status_code.to_i,
    method: keyword_field(http.method)
  }
end