Sha256: 4116b1686b02ffa99a3b1ea0ef66d9b6f4095f7a7d9e2edc7fb729f2ff1ff0bb

Contents?: true

Size: 917 Bytes

Versions: 3

Compression:

Stored size: 917 Bytes

Contents

module Radriar
  module API
    module Logging
      class Instrumenter
        def initialize(app)
          @app = app
        end

        def call(env)
          payload = {
            remote_addr: env['REMOTE_ADDR'],
            request_method: env['REQUEST_METHOD'],
            request_path: env['PATH_INFO'],
            request_query: env['QUERY_STRING'],
            x_organization: env['HTTP_X_ORGANIZATION']
          }

          ActiveSupport::Notifications.instrument('grape.request', payload) do
            @app.call(env).tap do |response|
              if payload[:params].present?
                payload[:params] = env['api.endpoint'].params.to_hash
                payload[:params].delete(:route_info)
                payload[:params].delete(:format)
                payload[:response_status] = response[0]
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
radriar-0.1.0.alpha.3 lib/radriar/api/logging.rb
radriar-0.1.0.alpha.2 lib/radriar/api/logging.rb
radriar-0.1.0.alpha.1 lib/radriar/api/logging.rb