diff --git a/lib/remote_storage/swift.rb b/lib/remote_storage/swift.rb index 75526a5..1d0b4f5 100644 --- a/lib/remote_storage/swift.rb +++ b/lib/remote_storage/swift.rb @@ -107,10 +107,10 @@ module RemoteStorage metadata[metadata_values[idx]] = metadata_values[idx + 1] end - listing[name] = {["ETag"] = metadata["etag"]} + listing[name] = {["ETag"] = metadata["e"]} if string.sub(name, -1) ~= "/" then - listing[name]["Content-Type"] = metadata["type"] - listing[name]["Content-Length"] = tonumber(metadata["size"]) + listing[name]["Content-Type"] = metadata["t"] + listing[name]["Content-Length"] = tonumber(metadata["s"]) end end @@ -121,7 +121,7 @@ module RemoteStorage end def get_directory_listing_from_redis(user, directory) - etag = redis.hget "rsm:#{user}:#{directory}/", "etag" + etag = redis.hget "rsm:#{user}:#{directory}/", "e" none_match = (server.env["HTTP_IF_NONE_MATCH"] || "").split(",").map(&:strip) server.halt 304 if none_match.include? etag @@ -192,10 +192,10 @@ module RemoteStorage timestamp = (Time.now.to_f * 1000).to_i metadata = { - etag: res.headers[:etag], - size: data.size, - type: content_type, - modified: timestamp + e: res.headers[:etag], + s: data.size, + t: content_type, + m: timestamp } if update_metadata_object(user, directory, key, metadata) && @@ -319,17 +319,17 @@ module RemoteStorage else redis_key = redis_key..directory.."/"..key.."/" end - if redis.call("hget", redis_key, "etag") then + if redis.call("hget", redis_key, "e") then return true end for index, dir in pairs(parent_directories) do - if redis.call("hget", "rsm:"..user..":"..dir.."/", "etag") then + if redis.call("hget", "rsm:"..user..":"..dir.."/", "e") then -- the directory already exists, no need to do further checks return false else -- check for existing document with same name as directory - if redis.call("hget", "rsm:"..user..":"..dir, "etag") then + if redis.call("hget", "rsm:"..user..":"..dir, "e") then return true end end @@ -419,7 +419,7 @@ module RemoteStorage end key = "rsm:#{user}:#{dir}/" - metadata = {etag: etag, modified: timestamp} + metadata = {e: etag, m: timestamp} redis.hmset(key, *metadata) redis.sadd "rsm:#{user}:#{parent_directory_for(dir)}:i", "#{top_directory(dir)}/" end @@ -459,7 +459,7 @@ module RemoteStorage get_response = do_get_request("#{container_url_for(user)}/?format=json&path=") etag = etag_for(get_response.body) end - metadata = {etag: etag, modified: timestamp} + metadata = {e: etag, m: timestamp} redis.hmset("rsm:#{user}:#{dir}/", *metadata) end end diff --git a/migrate_metadata_to_redis.rb b/migrate_metadata_to_redis.rb index d1211c8..a421d27 100755 --- a/migrate_metadata_to_redis.rb +++ b/migrate_metadata_to_redis.rb @@ -93,8 +93,8 @@ class Migrator def save_directory_data(dir, item, data, timestamp) key = "rsm:#{username}:#{dir.gsub(/^\//, "")}#{item}" metadata = { - etag: data["ETag"], - modified: timestamp_for(data["Last-Modified"]) + e: data["ETag"], + m: timestamp_for(data["Last-Modified"]) } logger.debug "Metadata for dir #{key}: #{metadata}" @@ -104,10 +104,10 @@ class Migrator def save_document_data(dir, item, data) key = "rsm:#{username}:#{dir.gsub(/^\//, "")}#{item}" metadata = { - etag: data["ETag"], - size: data["Content-Length"], - type: data["Content-Type"], - modified: timestamp_for(data["Last-Modified"]) + e: data["ETag"], + s: data["Content-Length"], + t: data["Content-Type"], + m: timestamp_for(data["Last-Modified"]) } logger.debug "Metadata for document #{key}: #{metadata}" redis.hmset(key, *metadata) unless dry_run diff --git a/spec/swift/app_spec.rb b/spec/swift/app_spec.rb index 831c089..61204e3 100644 --- a/spec/swift/app_spec.rb +++ b/spec/swift/app_spec.rb @@ -32,10 +32,10 @@ describe "App" do end metadata = redis.hgetall "rsm:phil:food/aguacate" - metadata["size"].must_equal "2" - metadata["type"].must_equal "text/plain; charset=utf-8" - metadata["etag"].must_equal "bla" - metadata["modified"].length.must_equal 13 + metadata["s"].must_equal "2" + metadata["t"].must_equal "text/plain; charset=utf-8" + metadata["e"].must_equal "bla" + metadata["m"].length.must_equal 13 end it "creates the directory objects metadata in redis" do @@ -51,12 +51,12 @@ describe "App" do end metadata = redis.hgetall "rsm:phil:/" - metadata["etag"].must_equal "rootetag" - metadata["modified"].length.must_equal 13 + metadata["e"].must_equal "rootetag" + metadata["m"].length.must_equal 13 metadata = redis.hgetall "rsm:phil:food/" - metadata["etag"].must_equal "bla" - metadata["modified"].length.must_equal 13 + metadata["e"].must_equal "bla" + metadata["m"].length.must_equal 13 food_items = redis.smembers "rsm:phil:food/:i" food_items.each do |food_item| @@ -82,7 +82,7 @@ describe "App" do last_response.status.must_equal 200 metadata = redis.hgetall "rsm:phil:food/aguacate" - metadata["size"].must_equal "2" + metadata["s"].must_equal "2" end it "conflicts when there is a directory with same name as document" do @@ -198,9 +198,9 @@ describe "App" do end metadata = redis.hgetall "rsm:phil:food/" - metadata["etag"].must_equal "newetag" - metadata["modified"].length.must_equal 13 - metadata["modified"].wont_equal old_metadata["modified"] + metadata["e"].must_equal "newetag" + metadata["m"].length.must_equal 13 + metadata["m"].wont_equal old_metadata["m"] food_items = redis.smembers "rsm:phil:food/:i" food_items.must_equal ["camaron"]