Sha256: 13816b74c2f8f8c14f1ec354eb1aa594ec1e09080a9b5b7262fca2ad6507cb9c

Contents?: true

Size: 605 Bytes

Versions: 2

Compression:

Stored size: 605 Bytes

Contents

require 'rack/request'
require_relative 'reduction'

module Rack
  module Reducer
    # Mount Rack::Reducer as middleware
    class Middleware
      def initialize(app, options = {})
        @app = app
        @key = options[:key] || 'rack.reduction'
        @props = options
      end

      # Call the next app in the middleware stack, with env[key] set
      # to the ouput of a reduction
      def call(env)
        params = Rack::Request.new(env).params
        reduction = Reduction.new(@props.merge(params: params)).reduce
        @app.call env.merge(@key => reduction)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rack-reducer-1.0.1 lib/rack/reducer/middleware.rb
rack-reducer-1.0.0 lib/rack/reducer/middleware.rb