Sha256: 5116a19ce65bc25f89cee7c518d4218c70b0f47d2c9116a29212f29582b988df

Contents?: true

Size: 1.04 KB

Versions: 15

Compression:

Stored size: 1.04 KB

Contents

require 'determinator/tracking'

module Determinator
  module Tracking
    module Rack
      class Middleware
        def initialize(app)
          @app = app
        end

        def call(env)
          Determinator::Tracking.start!(:rack)
          status, headers, response = @app.call(env)
          [status, headers, response]
        rescue
          error = true
          raise
        ensure
          Determinator::Tracking.finish!(
            status: status,
            error: !!error,
            endpoint: extract_endpoint(env)
          )
        end

        private

        def extract_endpoint(env)
          parts = if params = env['action_dispatch.request.path_parameters']
            [env['REQUEST_METHOD'], [params[:controller], params[:action]].join('#')]
          elsif env['sinatra.route']
            [env['sinatra.route']]
          else
            [env['REQUEST_METHOD']]
          end
          Determinator::Tracking.collect_endpoint_info(parts)
        rescue
          env['PATH_INFO']
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
determinator-2.9.3 lib/determinator/tracking/rack/middleware.rb
determinator-2.9.2 lib/determinator/tracking/rack/middleware.rb
determinator-2.9.1 lib/determinator/tracking/rack/middleware.rb
determinator-2.9.0 lib/determinator/tracking/rack/middleware.rb
determinator-2.8.0 lib/determinator/tracking/rack/middleware.rb
determinator-2.7.1 lib/determinator/tracking/rack/middleware.rb
determinator-2.7.0 lib/determinator/tracking/rack/middleware.rb
determinator-2.6.0 lib/determinator/tracking/rack/middleware.rb
determinator-2.5.4 lib/determinator/tracking/rack/middleware.rb
determinator-2.5.3 lib/determinator/tracking/rack/middleware.rb
determinator-2.5.2 lib/determinator/tracking/rack/middleware.rb
determinator-2.5.1 lib/determinator/tracking/rack/middleware.rb
determinator-2.5.0 lib/determinator/tracking/rack/middleware.rb
determinator-2.4.4 lib/determinator/tracking/rack/middleware.rb
determinator-2.4.3 lib/determinator/tracking/rack/middleware.rb