class Slices::Asset::Maker

Attributes

args[RW]
new_asset[RW]

Public Class Methods

new(args) click to toggle source
# File lib/slices/asset/maker.rb, line 11
def initialize(args)
  self.args = args
end
run(args) click to toggle source
# File lib/slices/asset/maker.rb, line 7
def self.run(args)
  new(args).run
end

Public Instance Methods

create_new_asset() click to toggle source
# File lib/slices/asset/maker.rb, line 15
def create_new_asset
  ::Asset.create!(args)
end
delete_tempfile_from_s3() click to toggle source
# File lib/slices/asset/maker.rb, line 35
def delete_tempfile_from_s3
  directory = new_asset.file.send(:directory)
  directory.files.new(key: s3_path).destroy
end
find_matching_asset(new_asset) click to toggle source
# File lib/slices/asset/maker.rb, line 19
def find_matching_asset(new_asset)
  ::Asset.where({
    file_fingerprint: new_asset.file_fingerprint, :_id.ne => new_asset.id
  }).first
end
run() click to toggle source
# File lib/slices/asset/maker.rb, line 40
def run
  self.new_asset = create_new_asset
  delete_tempfile_from_s3 if tempfile_stored_on_s3?
  matching_asset = find_matching_asset(new_asset)

  if matching_asset.present?
    new_asset.destroy
    matching_asset
  else
    new_asset
  end
end
s3_path() click to toggle source
# File lib/slices/asset/maker.rb, line 30
def s3_path
  s3_path = args[:file].path
  s3_path[s3_path.index(Slices::Config::S3_TEMPFILE_KEY_PREFIX) .. -1]
end
tempfile_stored_on_s3?() click to toggle source
# File lib/slices/asset/maker.rb, line 25
def tempfile_stored_on_s3?
  Slices::Config.s3_storage? &&
    args[:file].is_a?(URI)
end