2012-02-27 16:32:12 +01:00

44 lines
1.2 KiB
Ruby

require "riak"
module RemoteStorage
module Riak
def authorize_request(user, category, token)
return true if category == "public" && env["REQUEST_METHOD"] == "GET"
client = ::Riak::Client.new(settings.riak_config)
categories = client.bucket("authorizations").get("#{user}:#{token}").data
halt 403 unless categories.include?(category)
rescue ::Riak::HTTPFailedRequest
halt 403
end
def get_data(user, category, key)
client = ::Riak::Client.new(settings.riak_config)
client.bucket("user_data").get("#{user}:#{category}:#{key}").data
rescue ::Riak::HTTPFailedRequest
halt 404
end
def put_data(user, category, key, data)
client = ::Riak::Client.new(settings.riak_config)
object = client.bucket("user_data").new("#{user}:#{category}:#{key}")
object.content_type = "text/plain"
object.data = data
object.store
rescue ::Riak::HTTPFailedRequest
halt 422
end
def delete_data(user, category, key)
client = ::Riak::Client.new(settings.riak_config)
riak_response = client.bucket("user_data").delete("#{user}:#{category}:#{key}")
halt riak_response[:code]
rescue ::Riak::HTTPFailedRequest
halt 404
end
end
end