Sha256: ea8f9354f73e7258df889fe25445051df87120b59360ed963b5e1f70b12037c0

Contents?: true

Size: 808 Bytes

Versions: 3

Compression:

Stored size: 808 Bytes

Contents

module Apiture
  module Middleware
    class SetParameterBase

      def initialize(app, options)
        @app = app
        @name = options[:name]
        @renderer = options[:renderer]
        @default = options[:default]
      end

      def call(env)
        value = find_parameter_value(env)
        if value == nil && @default
          value = @default
        end
        apply_parameter_value(env, value)
        @app.call(env)
      end

      protected

        def find_parameter_value(env)
          if @renderer
            @renderer.render_parameter(@name, env)
          else
            context = env[:context]
            context.get_attribute(@name)
          end
        end

        def apply_parameter_value(env, value)
          raise NotImplementedError
        end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
apiture-0.2.6 lib/apiture/middleware/set_parameter_base.rb
apiture-0.2.5 lib/apiture/middleware/set_parameter_base.rb
apiture-0.2.4 lib/apiture/middleware/set_parameter_base.rb