module Hasta::Storage
Common file storage methods used by the local and S3 storage providers
Attributes
fog_storage[R]
s3_file_resolver[R]
Public Class Methods
new(fog_storage, s3_file_resolver = ResolveS3File)
click to toggle source
# File lib/hasta/storage.rb, line 15 def initialize(fog_storage, s3_file_resolver = ResolveS3File) @fog_storage = fog_storage @s3_file_resolver = s3_file_resolver end
Public Instance Methods
exists?(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 20 def exists?(s3_uri) if s3_uri.file? !!fog_file(s3_uri) elsif s3_bucket = bucket(s3_uri) !fog_files(s3_bucket, s3_uri).empty? end end
files_for(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 28 def files_for(s3_uri) if s3_uri.file? [s3_file!(s3_uri)] else s3_files(bucket!(s3_uri), s3_uri) end end
Private Instance Methods
bang!(s3_uri) { || ... }
click to toggle source
# File lib/hasta/storage.rb, line 76 def bang!(s3_uri) yield.tap do |result| raise NonExistentPath.new(s3_uri) unless result end
bucket(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 40 def bucket(s3_uri) fog_storage.directories.get(s3_uri.bucket) end
bucket!(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 56 def bucket!(s3_uri) bang!(s3_uri) { bucket(s3_uri) } end
create_bucket(bucket_name)
click to toggle source
# File lib/hasta/storage.rb, line 64 def create_bucket(bucket_name) fog_storage.directories.create(:key => bucket_name) end
create_file(bucket, key, content)
click to toggle source
# File lib/hasta/storage.rb, line 68 def create_file(bucket, key, content) bucket.files.create(:body => content, :key => key) end
file_s3_uri(file, path=file.key)
click to toggle source
# File lib/hasta/storage.rb, line 72 def file_s3_uri(file, path=file.key) S3URI.new(file.directory.key, path) end
fog_file(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 52 def fog_file(s3_uri) (s3_bucket = bucket(s3_uri)) && s3_bucket.files.get(s3_uri.path) end
fog_file!(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 60 def fog_file!(s3_uri) bang!(s3_uri) { fog_file(s3_uri) } end
s3_file!(s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 44 def s3_file!(s3_uri) s3_file_resolver.resolve(fog_file!(s3_uri)) end
s3_files(bucket, s3_uri)
click to toggle source
# File lib/hasta/storage.rb, line 48 def s3_files(bucket, s3_uri) fog_files(bucket, s3_uri).map { |fog_file| s3_file_resolver.resolve(fog_file) } end