class RainbowStorage::Manager

Attributes

config[RW]
path_generator[RW]

Public Class Methods

new(config, path_generator) click to toggle source
# File lib/rainbow_storage/manager.rb, line 10
def initialize(config, path_generator)
  @config         = config
  @path_generator = path_generator
end

Public Instance Methods

download(id, extension = nil) click to toggle source

Usage example: RainbowStorage.manager.download(1, '.jpg')

# File lib/rainbow_storage/manager.rb, line 42
def download(id, extension = nil)
  path = path_generator.filename(id, extension)
  adapter.get(path)
end
remove(id, extension = nil) click to toggle source

Usage example: RainbowStorage.manager.remove(1, 'jpg')

# File lib/rainbow_storage/manager.rb, line 49
def remove(id, extension = nil)
  path = path_generator.filename(id, extension)
  adapter.delete(path)
end
upload(options = {}) click to toggle source

TODO: maybe introduce RainbowStorage::File class for path, extension, content and content-type? Usage examples: RainbowStorage.manager.upload({file: URI(''), id: 1, extension: '.jpg'})

# File lib/rainbow_storage/manager.rb, line 18
def upload(options = {})
  validate_upload_options!(options)

  file      = options[:file]
  id        = options[:id]        || "#{file.object_id}#{Time.now.to_i}"
  extension = options[:extension] || infer_extenstion_from_file(file)

  content = case file
  when Tempfile
    file.rewind
    file.read
  when URI
    open(file.to_s).read
  else
    fail RainbowStorage::UnsupportedFileTypeException,
      "#{file.class} is not valid type for file attribute"
  end

  path = path_generator.filename(id, extension)
  adapter.put(path, content)
end

Private Instance Methods

adapter() click to toggle source
# File lib/rainbow_storage/manager.rb, line 69
def adapter
  @adapter ||= RainbowStorage::Adapters::Repository.get(config.adapter).new(config.adapter_config)
end
infer_extension_from_file(file) click to toggle source
# File lib/rainbow_storage/manager.rb, line 66
def infer_extension_from_file(file)
end
validate_upload_options!(options) click to toggle source
# File lib/rainbow_storage/manager.rb, line 63
def validate_upload_options!(options)
end