Sha256: 820ee84cfbe8996d35783dbbda54d3ddf9528fe01fec390bf527746920f7b8bb

Contents?: true

Size: 789 Bytes

Versions: 4

Compression:

Stored size: 789 Bytes

Contents

module Apiture
  module Middleware
    class SetParameterBase

      def initialize(app, options)
        @app = app
        @name = options[:name]
        @schema = options[:schema]
        @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 @schema
            @schema.build(@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

4 entries across 4 versions & 1 rubygems

Version Path
apiture-0.2.3 lib/apiture/middleware/set_parameter_base.rb
apiture-0.2.2 lib/apiture/middleware/set_parameter_base.rb
apiture-0.2.1 lib/apiture/middleware/set_parameter_base.rb
apiture-0.2.0 lib/apiture/middleware/set_parameter_base.rb