Sha256: 46dd6e1b981779c7c4cce90a6060dad18c3db0684dd78bd030142587f268e626

Contents?: true

Size: 1.2 KB

Versions: 35

Compression:

Stored size: 1.2 KB

Contents

require 'forwardable'

module Honeybadger
  module Rack
    # Middleware for Rack applications. Adds an error ID to the Rack response
    # when an error has occurred.
    class UserInformer
      extend Forwardable

      def initialize(app, agent = nil)
        @app = app
        @agent = agent.kind_of?(Agent) && agent
      end

      def replacement(with)
        config[:'user_informer.info'].gsub(/\{\{\s*error_id\s*\}\}/, with.to_s)
      end

      def call(env)
        return @app.call(env) unless config[:'user_informer.enabled']
        status, headers, body = @app.call(env)
        if env['honeybadger.error_id']
          new_body = []
          replace  = replacement(env['honeybadger.error_id'])
          body.each do |chunk|
            new_body << chunk.gsub("<!-- HONEYBADGER ERROR -->", replace)
          end
          body.close if body.respond_to?(:close)
          headers['Content-Length'] = new_body.reduce(0) { |a,e| a += e.bytesize }.to_s
          body = new_body
        end
        [status, headers, body]
      end

      private

      def_delegator :agent, :config
      def_delegator :config, :logger

      def agent
        @agent || Honeybadger::Agent.instance
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
honeybadger-5.8.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.7.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.6.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.5.1 lib/honeybadger/rack/user_informer.rb
honeybadger-5.5.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.4.1 lib/honeybadger/rack/user_informer.rb
honeybadger-5.4.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.3.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.2.1 lib/honeybadger/rack/user_informer.rb
honeybadger-5.0.2 lib/honeybadger/rack/user_informer.rb
honeybadger-5.0.1 lib/honeybadger/rack/user_informer.rb
honeybadger-5.0.0 lib/honeybadger/rack/user_informer.rb
honeybadger-5.0.0.beta1 lib/honeybadger/rack/user_informer.rb
honeybadger-4.12.2 lib/honeybadger/rack/user_informer.rb
honeybadger-4.12.1 lib/honeybadger/rack/user_informer.rb
honeybadger-4.12.0 lib/honeybadger/rack/user_informer.rb
honeybadger-4.11.0 lib/honeybadger/rack/user_informer.rb
honeybadger-4.10.0 lib/honeybadger/rack/user_informer.rb
honeybadger-4.9.0 lib/honeybadger/rack/user_informer.rb
honeybadger-4.8.0 lib/honeybadger/rack/user_informer.rb