def call(env)
key = env['PATH_INFO'][1..-1].to_s
case env['REQUEST_METHOD']
when 'HEAD'
if key.empty?
respond(400, 'Empty key')
elsif @store.key?(key)
empty(200)
else
empty(404)
end
when 'GET'
if key.empty?
respond(400, 'Empty key')
elsif value = @store[key]
respond(200, value)
else
empty(404)
end
when 'POST', 'PUT'
if key.empty?
respond(400, 'Empty key')
else
respond(200, @store[key] = env['rack.input'].read)
end
when 'DELETE'
if key.empty?
@store.clear
empty(200)
else
respond(200, @store.delete(key))
end
else
respond(400, 'Bad method')
end
rescue => ex
respond(500, "Exception: #{ex.message}")
end