Sha256: 974a162990e02c844abc87e01a801e5a88ca0099c48c8f1691882bbd19c5d8f1

Contents?: true

Size: 941 Bytes

Versions: 2

Compression:

Stored size: 941 Bytes

Contents

# frozen_string_literal: true

module Mnemosyne
  module Middleware
    class Acfs
      def initialize(app, *_)
        @app = app
      end

      # rubocop:disable Metrics/MethodLength
      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
        end

        request.on_complete do |response, nxt|
          begin
            span.finish!
            trace << span
          ensure
            nxt.call(response)
          end
        end

        @app.call(request)
      end

      private

      def extract_meta(request)
        {
          method: request.method,
          url: request.url
        }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mnemosyne-ruby-0.2.0 lib/mnemosyne/middleware/acfs.rb
mnemosyne-ruby-0.1.0 lib/mnemosyne/middleware/acfs.rb