about summary refs log tree commit
path: root/lib/metropolis/common/ro.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/metropolis/common/ro.rb')
-rw-r--r--lib/metropolis/common/ro.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/metropolis/common/ro.rb b/lib/metropolis/common/ro.rb
new file mode 100644
index 0000000..10b5439
--- /dev/null
+++ b/lib/metropolis/common/ro.rb
@@ -0,0 +1,18 @@
+# -*- encoding: binary -*-
+module Metropolis::Common::RO
+  def call(env)
+    if %r{\A/(.*)\z} =~ env["PATH_INFO"]
+      key = unescape($1)
+      case env["REQUEST_METHOD"]
+      when "GET"
+        get(key)
+      when "HEAD"
+        head(key)
+      else
+        r(403)
+      end
+    else # OPTIONS
+      r(405)
+    end
+  end
+end