Initial commit
This commit is contained in:
43
lib/remote_storage/riak.rb
Normal file
43
lib/remote_storage/riak.rb
Normal file
@@ -0,0 +1,43 @@
|
||||
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
|
||||
Reference in New Issue
Block a user