diff options
author | David Wilkie <dwilkie@gmail.com> | 2014-05-17 13:48:28 +0700 |
---|---|---|
committer | David Wilkie <dwilkie@gmail.com> | 2014-05-17 13:48:28 +0700 |
commit | 7dcdcc8c8910397afa70468f5576ab93a19d1fb4 (patch) | |
tree | 4b7b68032763237cc2bf1dbb3913501e88c05ecd | |
parent | ce4a3959a5be68684c447ce68c626d0cc84f8c1a (diff) | |
download | rack-7dcdcc8c8910397afa70468f5576ab93a19d1fb4.tar.gz |
Refactor methodoverride to make it easier to inherit and extend
-rw-r--r-- | lib/rack/methodoverride.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/rack/methodoverride.rb b/lib/rack/methodoverride.rb index 449961ce..40b1b36f 100644 --- a/lib/rack/methodoverride.rb +++ b/lib/rack/methodoverride.rb @@ -10,7 +10,7 @@ module Rack end def call(env) - if env["REQUEST_METHOD"] == "POST" + if allowed_methods.include?(env["REQUEST_METHOD"]) method = method_override(env) if HTTP_METHODS.include?(method) env["rack.methodoverride.original_method"] = env["REQUEST_METHOD"] @@ -23,9 +23,19 @@ module Rack def method_override(env) req = Request.new(env) - method = req.POST[METHOD_OVERRIDE_PARAM_KEY] || + method = method_override_param(req) || env[HTTP_METHOD_OVERRIDE_HEADER] method.to_s.upcase end + + private + + def allowed_methods + ["POST"] + end + + def method_override_param(req) + req.POST[METHOD_OVERRIDE_PARAM_KEY] + end end end |