From b8ee33b8e38911012fc055f02da1878e45eb721a Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 23 Nov 2010 12:17:24 -0800 Subject: split out common read/write code It will be useful when we support other backends. --- lib/metropolis/common.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/metropolis/common.rb (limited to 'lib/metropolis/common.rb') diff --git a/lib/metropolis/common.rb b/lib/metropolis/common.rb new file mode 100644 index 0000000..b86102d --- /dev/null +++ b/lib/metropolis/common.rb @@ -0,0 +1,31 @@ +# -*- encoding: binary -*- +module Metropolis::Common + include Rack::Utils # unescape + + def r(code) + body = "#{HTTP_STATUS_CODES[code]}\n" + [ code, + { 'Content-Length' => body.size.to_s, 'Content-Type' => 'text/plain' }, + [ body ] ] + end + + 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) + when "DELETE" + delete(key) + when "PUT" + put(key, env) + else + [ 405, {}, [] ] + end + else # OPTIONS + [ 405, {}, [] ] + end + end +end -- cgit v1.2.3-24-ge0c7