summary refs log tree commit
diff options
context:
space:
mode:
authorDavid Wilkie <dwilkie@gmail.com>2014-05-17 13:48:28 +0700
committerDavid Wilkie <dwilkie@gmail.com>2014-05-17 13:48:28 +0700
commit7dcdcc8c8910397afa70468f5576ab93a19d1fb4 (patch)
tree4b7b68032763237cc2bf1dbb3913501e88c05ecd
parentce4a3959a5be68684c447ce68c626d0cc84f8c1a (diff)
downloadrack-7dcdcc8c8910397afa70468f5576ab93a19d1fb4.tar.gz
Refactor methodoverride to make it easier to inherit and extend
-rw-r--r--lib/rack/methodoverride.rb14
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