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