diff --git a/lib/remote_storage/swift.rb b/lib/remote_storage/swift.rb index c3f5c2f..4c42e10 100644 --- a/lib/remote_storage/swift.rb +++ b/lib/remote_storage/swift.rb @@ -265,7 +265,7 @@ module RemoteStorage end def update_metadata_object(user, directory, key, metadata) - key = "users:#{user}:data:#{directory}/#{key}" + key = "rs_meta:#{user}:#{directory}/#{key}" redis.hmset(key, *metadata) end @@ -274,7 +274,10 @@ module RemoteStorage timestamp = (Time.now.to_f * 1000).to_i parent_directories_for(directory).each do |dir| - 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}/" + metadata = {etag: res.headers[:etag], modified: timestamp} + redis.hmset(key, *metadata) end true diff --git a/spec/swift/app_spec.rb b/spec/swift/app_spec.rb index bc3ec0a..fdbc39b 100644 --- a/spec/swift/app_spec.rb +++ b/spec/swift/app_spec.rb @@ -17,7 +17,6 @@ describe "App" do before do redis.sadd "authorizations:phil:amarillo", [":rw"] header "Authorization", "Bearer amarillo" - end it "creates the metadata object in redis" do @@ -28,12 +27,26 @@ describe "App" do end end - metadata = redis.hgetall "users:phil:data:food/aguacate" + metadata = redis.hgetall "rs_meta:phil:food/aguacate" metadata["size"].must_equal "2" metadata["type"].must_equal "text/plain; charset=utf-8" metadata["etag"].must_equal "bla" metadata["modified"].must_equal nil end + + it "creates the directory objects metadata in redis" do + put_stub = OpenStruct.new(headers: {etag: "bla"}) + RemoteStorage::Swift.stub_any_instance :has_name_collision?, false do + RestClient.stub :put, put_stub do + put "/phil/food/aguacate", "si" + end + end + + metadata = redis.hgetall "rs_meta:phil:food/" + metadata["etag"].must_equal "bla" + metadata["modified"].length.must_equal 13 + metadata = redis.hgetall "rs_meta:phil:food/" + end end end end