Sha256: 1f29a7c7eaf6a02be3801853ad0258ad67b6dd0dcff0fefb520c150835766f47

Contents?: true

Size: 588 Bytes

Versions: 4

Compression:

Stored size: 588 Bytes

Contents

module WebValve
  module Instrumentation
    class Middleware
      METHOD = 'REQUEST_METHOD'.freeze
      PATH = 'PATH_INFO'.freeze
      HOST = 'SERVER_NAME'.freeze

      def initialize(app)
        @app = app
      end

      def call(env)
        ActiveSupport::Notifications.instrument('request.webvalve') do |payload|
          payload[:method] = env[METHOD]
          payload[:url] = env[PATH]
          payload[:host] = env[HOST]
          @app.call(env).tap do |status, _header, _body|
            payload[:status] = status
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
webvalve-0.9.3 lib/webvalve/instrumentation/middleware.rb
webvalve-0.9.2 lib/webvalve/instrumentation/middleware.rb
webvalve-0.9.1 lib/webvalve/instrumentation/middleware.rb
webvalve-0.9.0 lib/webvalve/instrumentation/middleware.rb