class Rack::Transform

Constants

VERSION

Public Class Methods

new(app) { |self| ... } click to toggle source
# File lib/rack/transform.rb, line 5
def initialize(app)
  @app = app
  @transformers = {}
  yield self if block_given?
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/transform.rb, line 11
def call(env)
  if transformer = request_transformer(env)
    env = transformer.request.call(env)
    status, header, body = @app.call(env)
    transformer.response.call(status, header, body)
  else
    @app.call(env)
  end
end
on(type, &block) click to toggle source
# File lib/rack/transform.rb, line 21
def on(type, &block)
  @transformers[type] ||= Transformer.new(&block)
end

Private Instance Methods

request_transformer(env) click to toggle source
# File lib/rack/transform.rb, line 27
def request_transformer(env)
  if env[Rack::REQUEST_METHOD] == Rack::GET
    req = Rack::Request.new(env)
    @transformers[req.params["type"]]
  end
end