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
link(id, extension = nil)
click to toggle source
Usage example: RainbowStorage.manager
.link(1, 'jpg')
# File lib/rainbow_storage/manager.rb, line 56 def link(id, extension = nil) path = path_generator.filename(id, extension) adapter.public_url(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