lib/binary_storage/blob.rb in dynamic_image-0.9.5 vs lib/binary_storage/blob.rb in dynamic_image-0.9.6

- old
+ new

@@ -1,105 +1,105 @@ module BinaryStorage - class Blob - - class << self - def find(hash_string) - blob = self.new(:hash_string => hash_string) - return nil unless blob.exists? - blob.load - blob - end + class Blob + + class << self + def find(hash_string) + blob = self.new(:hash_string => hash_string) + return nil unless blob.exists? + blob.load + blob + end - def exists?(hash_string) - self.new(:hash_string => hash_string).exists? - end + def exists?(hash_string) + self.new(:hash_string => hash_string).exists? + end - def create(data) - blob = self.new(data) - blob.save - blob - end - - def storage_dir(hash_string=nil) - root = BinaryStorage.storage_dir - (hash_string) ? File.join(root, hash_string.match(/^(..)/)[1]) : root - end - - def storage_path(hash_string) - File.join(storage_dir(hash_string), hash_string.gsub(/^(..)/, '')) - end - end - - def initialize(*args) - args = *args - options = { - :hash_string => nil, - :data => nil - } - if args.kind_of?(Hash) - options.merge!(args) - else - options[:data] = args - end - @hash_string = options[:hash_string] - @data = options[:data] - end - - def data - @data - end - - def data=(new_data) - @hash_string = nil - @data = new_data - end - - def hash_string - unless @hash_string - if @data - @hash_string = BinaryStorage.hexdigest(data) - else - raise "Binary has no data!" - end - end - @hash_string - end - - def storage_dir - BinaryStorage::Blob.storage_dir(hash_string) - end + def create(data) + blob = self.new(data) + blob.save + blob + end + + def storage_dir(hash_string=nil) + root = BinaryStorage.storage_dir + (hash_string) ? File.join(root, hash_string.match(/^(..)/)[1]) : root + end + + def storage_path(hash_string) + File.join(storage_dir(hash_string), hash_string.gsub(/^(..)/, '')) + end + end + + def initialize(*args) + args = *args + options = { + :hash_string => nil, + :data => nil + } + if args.kind_of?(Hash) + options.merge!(args) + else + options[:data] = args + end + @hash_string = options[:hash_string] + @data = options[:data] + end + + def data + @data + end + + def data=(new_data) + @hash_string = nil + @data = new_data + end + + def hash_string + unless @hash_string + if @data + @hash_string = BinaryStorage.hexdigest(data) + else + raise "Binary has no data!" + end + end + @hash_string + end + + def storage_dir + BinaryStorage::Blob.storage_dir(hash_string) + end - def storage_path - BinaryStorage::Blob.storage_path(hash_string) - end - - def exists? - File.exists?(storage_path) - end - - def empty? - (hash_string && !exists?) || !data || data.empty? - end - - def load - raise "File not found" unless exists? - @data = File.open(storage_path, "rb") {|io| io.read } - end - - def delete - if exists? - FileUtils.rm(storage_path) - end - end + def storage_path + BinaryStorage::Blob.storage_path(hash_string) + end + + def exists? + File.exists?(storage_path) + end + + def empty? + (hash_string && !exists?) || !data || data.empty? + end + + def load + raise "File not found" unless exists? + @data = File.open(storage_path, "rb") {|io| io.read } + end + + def delete + if exists? + FileUtils.rm(storage_path) + end + end - def save - unless exists? - FileUtils.mkdir_p(storage_dir) - file = File.new(storage_path, 'wb') - file.write(@data) - file.close - end - return true - end - - end -end \ No newline at end of file + def save + unless exists? + FileUtils.mkdir_p(storage_dir) + file = File.new(storage_path, 'wb') + file.write(@data) + file.close + end + return true + end + + end +end