From c676c1a6a8fe0efc1e24db8b3ee0c26fa1c2d089 Mon Sep 17 00:00:00 2001 From: Garret Alfert Date: Sat, 23 Jan 2016 14:28:14 -0500 Subject: [PATCH] Add metadata entry for root directory --- lib/remote_storage/swift.rb | 6 ++++++ spec/swift/app_spec.rb | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/lib/remote_storage/swift.rb b/lib/remote_storage/swift.rb index 94ccafc..ceb65a4 100644 --- a/lib/remote_storage/swift.rb +++ b/lib/remote_storage/swift.rb @@ -304,6 +304,8 @@ module RemoteStorage directories.pop end + parent_directories << "" # add empty string for the root directory + parent_directories end @@ -336,6 +338,7 @@ module RemoteStorage timestamp = (Time.now.to_f * 1000).to_i 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") key = "rs_meta:#{user}:#{dir}/" metadata = {etag: res.headers[:etag], modified: timestamp} @@ -346,6 +349,7 @@ module RemoteStorage true rescue 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 end @@ -361,11 +365,13 @@ module RemoteStorage def delete_dir_objects(user, directory) parent_directories_for(directory).each do |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)}/") redis.del "rs_meta:#{user}:#{directory}/" redis.srem "rs_meta:#{user}:#{parent_directory_for(dir)}:items", "#{dir}/" else 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") metadata = {etag: res.headers[:etag], modified: timestamp} redis.hmset("rs_meta:#{user}:#{dir}/", *metadata) diff --git a/spec/swift/app_spec.rb b/spec/swift/app_spec.rb index 08bb344..924a259 100644 --- a/spec/swift/app_spec.rb +++ b/spec/swift/app_spec.rb @@ -48,6 +48,10 @@ describe "App" do 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["etag"].must_equal "bla" metadata["modified"].length.must_equal 13