Sha256: d79ffb84923bb24df283879917b9c0171a6262ceaf98de8214a2a829c52f58e3

Contents?: true

Size: 526 Bytes

Versions: 4

Compression:

Stored size: 526 Bytes

Contents

require 'rest-core/middleware'

class RestCore::ErrorDetector
  def self.members; [:error_detector]; end
  include RestCore::Middleware

  def call env
    if env[ASYNC]
      app.call(env.merge(ASYNC => lambda{ |response|
        env[ASYNC].call(process(env, response))
      }))
    else
      process(env, app.call(env))
    end
  end

  def process env, response
    detector = error_detector(env)
    if error = (detector && detector.call(response))
      fail(response, error)
    else
      response
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rest-core-1.0.3 lib/rest-core/middleware/error_detector.rb
rest-core-1.0.2 lib/rest-core/middleware/error_detector.rb
rest-core-1.0.1 lib/rest-core/middleware/error_detector.rb
rest-core-1.0.0 lib/rest-core/middleware/error_detector.rb