module Datadog::Tracing::Contrib::Hanami::RouterTracing

def call(env)

def call(env)
  return super if Tracing.active_span && Tracing.active_span.name == Ext::SPAN_ROUTING
  Tracing.trace(
    Ext::SPAN_ROUTING,
    service: configuration[:service_name],
    span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND
  ) do |span_op, trace_op|
    begin
      span_op.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
      span_op.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING)
      span_op.resource = nil
      super
    ensure
      span_op.resource ||= if trace_op.resource_override?
                             trace_op.resource
                           else
                             env['REQUEST_METHOD']
                           end
    end
  end
end

def configuration

def configuration
  Datadog.configuration.tracing[:hanami]
end