class Mnemosyne::Middleware::Faraday

Public Instance Methods

call(env) click to toggle source
# File lib/mnemosyne/middleware/faraday.rb, line 8
def call(env)
  trace = ::Mnemosyne::Instrumenter.current_trace

  return @app.call(env) unless trace

  span = ::Mnemosyne::Span.new 'external.http.faraday', \
    meta: {url: env[:url].to_s, method: env[:method]}

  span.start!

  env[:request_headers].merge!({
    'X-Mnemosyne-Transaction' => trace.transaction,
    'X-Mnemosyne-Origin' => span.uuid
  }.compact)

  @app.call(env).on_complete do |env| # rubocop:disable Lint/ShadowingOuterLocalVariable
    span.meta[:status] = env[:status]

    trace << span.finish!
  end
end