class Mnemosyne::Middleware::Acfs

Public Class Methods

new(app, *) click to toggle source
# File lib/mnemosyne/middleware/acfs.rb, line 6
def initialize(app, *)
  @app = app
end

Public Instance Methods

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

  if trace
    span = ::Mnemosyne::Span.new('external.http.acfs',
      meta: extract_meta(request))

    span.start!

    request.headers['X-Mnemosyne-Transaction'] = trace.transaction
    request.headers['X-Mnemosyne-Origin'] = span.uuid

    request.on_complete do |response, nxt|
      span.finish!
      trace << span

      nxt.call(response)
    end
  end

  @app.call(request)
end

Private Instance Methods

extract_meta(request) click to toggle source
# File lib/mnemosyne/middleware/acfs.rb, line 35
def extract_meta(request)
  {
    url: request.url,
    method: request.method,
    params: request.params
  }
end