Sha256: 50cfd3d714d0addae8555f886d658714e5d84467bbd5ed1e65f5134195dc1410

Contents?: true

Size: 1 KB

Versions: 9

Compression:

Stored size: 1 KB

Contents

require 'goliath/rack/validator'

module Goliath
  module Rack
    module Validation
      # A middleware to validate that the request had a given HTTP method.
      #
      # @example
      #  use Goliath::Rack::Validation::RequestMethod, %w(GET POST)
      #
      class RequestMethod
        include Goliath::Rack::Validator
        attr_reader :methods

        ERROR = 'Invalid request method'

        # Called by the framework to create the Goliath::Rack::Validation::RequestMethod validator
        #
        # @param app The app object
        # @param methods [Array] The accepted request methods
        # @return [Goliath::Rack::Validation::RequestMethod] The validator
        def initialize(app, methods = [])
          @app = app
          @methods = Array(methods)
        end

        def call(env)
          return validation_error(405, ERROR, "Allow" => methods.map{|m| m.to_s.upcase}.join(', ')) unless methods.include?(env['REQUEST_METHOD'])
          @app.call(env)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
goliath-1.0.7 lib/goliath/rack/validation/request_method.rb
goliath-1.0.6 lib/goliath/rack/validation/request_method.rb
goliath-1.0.5 lib/goliath/rack/validation/request_method.rb
goliath-1.0.4 lib/goliath/rack/validation/request_method.rb
goliath-1.0.3 lib/goliath/rack/validation/request_method.rb
goliath-1.0.2 lib/goliath/rack/validation/request_method.rb
goliath-1.0.1 lib/goliath/rack/validation/request_method.rb
goliath-1.0.0 lib/goliath/rack/validation/request_method.rb
goliath-1.0.0.beta.1 lib/goliath/rack/validation/request_method.rb