Class: Blobsterix::Storage::FileSystem
- Includes:
- Logable
- Defined in:
- lib/blobsterix/storage/file_system.rb
Instance Method Summary collapse
- #bucket_exist(bucket = "root") ⇒ Object
- #create(bucket) ⇒ Object
- #delete(bucket) ⇒ Object
- #delete_key(bucket, key) ⇒ Object
- #get(bucket, key) ⇒ Object
-
#initialize(path) ⇒ FileSystem
constructor
A new instance of FileSystem.
- #list(bucket = "root") ⇒ Object
- #put(bucket, key, value) ⇒ Object
Methods included from Logable
Constructor Details
#initialize(path) ⇒ FileSystem
Returns a new instance of FileSystem.
8 9 10 11 12 |
# File 'lib/blobsterix/storage/file_system.rb', line 8 def initialize(path) logger.info "Create FileSystem at #{path}" @contents = path FileUtils.mkdir_p(@contents) if !Dir.exist?(@contents) end |
Instance Method Details
#bucket_exist(bucket = "root") ⇒ Object
14 15 16 |
# File 'lib/blobsterix/storage/file_system.rb', line 14 def bucket_exist(bucket="root") Dir.entries(contents).include?(bucket) and File.directory?(File.join(contents,bucket)) end |
#create(bucket) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/blobsterix/storage/file_system.rb', line 67 def create(bucket) logger.info "Storage: create bucket #{contents(bucket)}" FileUtils.mkdir_p(contents(bucket)) if not File.exist?(contents(bucket)) Nokogiri::XML::Builder.new do |xml| end.to_s end |
#delete(bucket) ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/blobsterix/storage/file_system.rb', line 75 def delete(bucket) logger.info "Storage: delete bucket #{contents(bucket)}" FileUtils.rm_rf(contents(bucket)) if bucket_exist(bucket) && bucket_files(bucket).empty? #Dir.rmdir(contents(bucket)) if bucket_exist(bucket) && bucket_files(bucket).empty? end |
#delete_key(bucket, key) ⇒ Object
83 84 85 86 87 88 |
# File 'lib/blobsterix/storage/file_system.rb', line 83 def delete_key(bucket, key) Blobsterix.storage_delete(BlobAccess.new(:bucket => bucket, :id => key)) Blobsterix.cache.invalidate(Blobsterix::BlobAccess.new(:bucket => bucket, :id => key)) (bucket, key).delete if bucket_files(bucket).include? key end |
#get(bucket, key) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/blobsterix/storage/file_system.rb', line 48 def get(bucket, key) if (not File.directory?(contents(bucket, key))) and bucket_files(bucket).include?(key) Blobsterix.storage_read(BlobAccess.new(:bucket => bucket, :id => key)) (bucket, key) else Blobsterix.storage_read_fail(BlobAccess.new(:bucket => bucket, :id => key)) Blobsterix::Storage::BlobMetaData.new end end |
#list(bucket = "root") ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/blobsterix/storage/file_system.rb', line 18 def list(bucket="root") if bucket =~ /root/ BucketList.new do |l| Dir.entries("#{contents}").each{|dir| l.buckets << Bucket.new(dir, time_string_of(dir)) if File.directory? File.join("#{contents}",dir) and !(dir =='.' || dir == '..') } end else if bucket_exist(bucket) b = Bucket.new(bucket, time_string_of(bucket)) bucket_files(bucket).each do |file| b.contents << BucketEntry.new(file) do |entry| = (bucket, file) entry.last_modified = .last_modified.strftime("%Y-%m-%dT%H:%M:%S.000Z") entry.etag = .etag entry.size = .size entry.mimetype = .mimetype entry.fullpath = contents(bucket, file).gsub("#{contents}/", "") end end b else Nokogiri::XML::Builder.new do |xml| xml.Error "no such bucket" end end end end |
#put(bucket, key, value) ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/blobsterix/storage/file_system.rb', line 58 def put(bucket, key, value) Blobsterix.storage_write(BlobAccess.new(:bucket => bucket, :id => key)) = (bucket, key).write() {|f| f.write(value.read) } Blobsterix.cache.invalidate(Blobsterix::BlobAccess.new(:bucket => bucket, :id => key)) end |