44 lines
1.2 KiB
Ruby
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
|