From 000726f5302f18ff095c68dfedf1547d0946209c Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 30 Nov 2010 15:04:57 -0800 Subject: internal API: get and head methods require env We'll need it for implementing the deflater/inflater --- lib/metropolis/common.rb | 8 ++++---- lib/metropolis/common/ro.rb | 4 ++-- lib/metropolis/hash.rb | 2 +- lib/metropolis/tc/hdb.rb | 4 ++-- test/test_tc_hdb.rb | 22 +++++++++++----------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/metropolis/common.rb b/lib/metropolis/common.rb index 2a3b841..273a1b3 100644 --- a/lib/metropolis/common.rb +++ b/lib/metropolis/common.rb @@ -27,9 +27,9 @@ module Metropolis::Common key = unescape($1) case env["REQUEST_METHOD"] when "GET" - get(key) + get(key, env) when "HEAD" - head(key) + head(key, env) when "DELETE" delete(key) when "PUT" @@ -44,8 +44,8 @@ module Metropolis::Common # generic HEAD implementation, some databases can optimize this by # not retrieving the value - def head(key) - r = get(key) + def head(key, env) + r = get(key, env) r[2].clear r end diff --git a/lib/metropolis/common/ro.rb b/lib/metropolis/common/ro.rb index 10b5439..390e2c6 100644 --- a/lib/metropolis/common/ro.rb +++ b/lib/metropolis/common/ro.rb @@ -5,9 +5,9 @@ module Metropolis::Common::RO key = unescape($1) case env["REQUEST_METHOD"] when "GET" - get(key) + get(key, env) when "HEAD" - head(key) + head(key, env) else r(403) end diff --git a/lib/metropolis/hash.rb b/lib/metropolis/hash.rb index 698aef0..61b7199 100644 --- a/lib/metropolis/hash.rb +++ b/lib/metropolis/hash.rb @@ -35,7 +35,7 @@ module Metropolis::Hash @db = @path = nil end - def get(key) + def get(key, env) value = @db[key] or return r(404) [ 200, { 'Content-Length' => value.size.to_s }.merge!(@headers), [ value ] ] end diff --git a/lib/metropolis/tc/hdb.rb b/lib/metropolis/tc/hdb.rb index ce6d13a..09d6439 100644 --- a/lib/metropolis/tc/hdb.rb +++ b/lib/metropolis/tc/hdb.rb @@ -124,13 +124,13 @@ module Metropolis::TC::HDB r(200) end - def head(key) + def head(key, env) size = reader(key) { |hdb| hdb.vsiz(key) or ex!(:vsiz, hdb) } 0 > size and return r(404, "") [ 200, { 'Content-Length' => size.to_s }.merge!(@headers), [] ] end - def get(key) + def get(key, env) value = nil reader(key) do |hdb| unless value = hdb.get(key) diff --git a/test/test_tc_hdb.rb b/test/test_tc_hdb.rb index e2229e8..f9ccabd 100644 --- a/test/test_tc_hdb.rb +++ b/test/test_tc_hdb.rb @@ -42,19 +42,19 @@ class Test_TC_HDB < Test::Unit::TestCase assert_equal '8', r[1]['Content-Length'] assert_equal "Created\n", r[2].join('') - r = o.get('hello') + r = o.get('hello', {}) assert_equal 200, r[0].to_i assert_equal 'application/octet-stream', r[1]['Content-Type'] assert_equal '5', r[1]['Content-Length'] assert_equal %w(world), r[2] - r = o.head('hello') + r = o.head('hello', {}) assert_equal 200, r[0].to_i assert_equal 'application/octet-stream', r[1]['Content-Type'] assert_equal '5', r[1]['Content-Length'] assert_equal [], r[2] - r = o.get('hellox') + r = o.get('hellox', {}) assert_equal 200, r[0].to_i assert_equal 'application/octet-stream', r[1]['Content-Type'] assert_equal '6', r[1]['Content-Length'] @@ -72,13 +72,13 @@ class Test_TC_HDB < Test::Unit::TestCase assert_equal '10', r[1]['Content-Length'] assert_equal "Not Found\n", r[2].join('') - r = o.get('hellox') + r = o.get('hellox', {}) assert_equal 404, r[0].to_i assert_equal 'text/plain', r[1]['Content-Type'] assert_equal '10', r[1]['Content-Length'] assert_equal "Not Found\n", r[2].join('') - r = o.head('hellox') + r = o.head('hellox', {}) assert_equal 404, r[0].to_i assert_equal 'text/plain', r[1]['Content-Type'] assert_equal '0', r[1]['Content-Length'] @@ -94,7 +94,7 @@ class Test_TC_HDB < Test::Unit::TestCase assert_equal 201, o.put("x", env)[0] env["rack.input"] = StringIO.new("wrong") assert_equal 409, o.put("x", env)[0] - assert_equal "hello", o.get("x")[2].join('') + assert_equal "hello", o.get("x", {})[2].join('') end def test_putcat @@ -106,7 +106,7 @@ class Test_TC_HDB < Test::Unit::TestCase assert_equal 201, o.put("x", env)[0] env["rack.input"] = StringIO.new("MOAR") assert_equal 201, o.put("x", env)[0] - assert_equal "helloMOAR", o.get("x")[2].join('') + assert_equal "helloMOAR", o.get("x", {})[2].join('') end def test_multiproc @@ -121,7 +121,7 @@ class Test_TC_HDB < Test::Unit::TestCase 100.times { o.put(key, env) sio.rewind - o.get(key) + o.get(key, {}) } } } @@ -180,15 +180,15 @@ class Test_TC_HDB < Test::Unit::TestCase assert_equal 65536, optimize_args[0] assert_nil optimize_args[2] assert_equal 3, optimize_args[1] - assert_nothing_raised { obj.get(k) } + assert_nothing_raised { obj.get(k, {}) } assert_nothing_raised { obj.put(k,{'rack.input' => StringIO.new(data)}) } obj = Metropolis.new(:uri => "#{uri}?#{query}", :readonly => true) - assert_equal data, obj.get(k)[2].join('') + assert_equal data, obj.get(k, {})[2].join('') obj.close! obj = Metropolis.new(:uri => uri, :readonly => true) - assert_equal data, obj.get(k)[2].join('') + assert_equal data, obj.get(k, {})[2].join('') obj.close! sum = obj.instance_eval { @dbv.inject(0) { |size, (hdb,path)| size += File.stat(path).size } -- cgit v1.2.3-24-ge0c7