Add metadata entry for root directory

This commit is contained in:
Garret Alfert 2016-01-23 14:28:14 -05:00
parent 599865cf3f
commit c676c1a6a8
2 changed files with 10 additions and 0 deletions

View File

@ -304,6 +304,8 @@ module RemoteStorage
directories.pop directories.pop
end end
parent_directories << "" # add empty string for the root directory
parent_directories parent_directories
end end
@ -336,6 +338,7 @@ module RemoteStorage
timestamp = (Time.now.to_f * 1000).to_i timestamp = (Time.now.to_f * 1000).to_i
parent_directories_for(directory).each do |dir| parent_directories_for(directory).each do |dir|
# TODO check if we can actually do a put request to the root dir
res = do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain") res = do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain")
key = "rs_meta:#{user}:#{dir}/" key = "rs_meta:#{user}:#{dir}/"
metadata = {etag: res.headers[:etag], modified: timestamp} metadata = {etag: res.headers[:etag], modified: timestamp}
@ -346,6 +349,7 @@ module RemoteStorage
true true
rescue rescue
parent_directories_for(directory).each do |dir| parent_directories_for(directory).each do |dir|
# TODO check if we can actually do a delete request to the root dir
do_delete_request("#{url_for_directory(user, dir)}/") rescue false do_delete_request("#{url_for_directory(user, dir)}/") rescue false
end end
@ -361,11 +365,13 @@ module RemoteStorage
def delete_dir_objects(user, directory) def delete_dir_objects(user, directory)
parent_directories_for(directory).each do |dir| parent_directories_for(directory).each do |dir|
if dir_empty?(user, dir) if dir_empty?(user, dir)
# TODO check if we can actually do a delete request to the root dir
do_delete_request("#{url_for_directory(user, dir)}/") do_delete_request("#{url_for_directory(user, dir)}/")
redis.del "rs_meta:#{user}:#{directory}/" redis.del "rs_meta:#{user}:#{directory}/"
redis.srem "rs_meta:#{user}:#{parent_directory_for(dir)}:items", "#{dir}/" redis.srem "rs_meta:#{user}:#{parent_directory_for(dir)}:items", "#{dir}/"
else else
timestamp = (Time.now.to_f * 1000).to_i timestamp = (Time.now.to_f * 1000).to_i
# TODO check if we can actually do a put request to the root dir
res = do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain") res = do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain")
metadata = {etag: res.headers[:etag], modified: timestamp} metadata = {etag: res.headers[:etag], modified: timestamp}
redis.hmset("rs_meta:#{user}:#{dir}/", *metadata) redis.hmset("rs_meta:#{user}:#{dir}/", *metadata)

View File

@ -48,6 +48,10 @@ describe "App" do
end end
end end
metadata = redis.hgetall "rs_meta:phil:/"
metadata["etag"].must_equal "bla"
metadata["modified"].length.must_equal 13
metadata = redis.hgetall "rs_meta:phil:food/" metadata = redis.hgetall "rs_meta:phil:food/"
metadata["etag"].must_equal "bla" metadata["etag"].must_equal "bla"
metadata["modified"].length.must_equal 13 metadata["modified"].length.must_equal 13