class Mhc::EtagStore

Public Class Methods

new(top_directory) click to toggle source
# File lib/mhc/etag.rb, line 3
def initialize(top_directory)
  @top_directory = top_directory
end

Public Instance Methods

get(uid) click to toggle source
# File lib/mhc/etag.rb, line 15
def get(uid)
  if value = load(uid)
    return value
  end
end
put(key, value) click to toggle source
# File lib/mhc/etag.rb, line 7
def put(key, value)
  if value.nil?
    unlink(key)
  else
    store(key, value)
  end
end
report_etags(uids = nil) click to toggle source
# File lib/mhc/etag.rb, line 25
def report_etags(uids = nil)
  hash = {}
  uid_list.each do |uid|
    hash[uid] = get(uid)
  end
  return hash
end
uid_list() click to toggle source
# File lib/mhc/etag.rb, line 21
def uid_list
  keys
end

Private Instance Methods

keys() click to toggle source
# File lib/mhc/etag.rb, line 34
def keys
  Dir.glob(File.join(@top_directory, '*.etag')).map {|p| make_key(p)}
end
load(key) click to toggle source
# File lib/mhc/etag.rb, line 44
def load(key)
  begin
    File.open(make_path(key), "r") do |f|
      return f.read
    end
  rescue
    return nil
  end
end
make_key(path) click to toggle source
# File lib/mhc/etag.rb, line 64
def make_key(path)
  File.basename(path, '.etag')
end
make_path(key) click to toggle source
# File lib/mhc/etag.rb, line 60
def make_path(key)
  File.join(@top_directory, key.to_s + '.etag')
end
store(key, value) click to toggle source
# File lib/mhc/etag.rb, line 38
def store(key, value)
  File.open(make_path(key), "w") do |f|
    f.write(value)
  end
end