Class: Gluttonberg::AssetBulkImport

Inherits:
Object
  • Object
show all
Defined in:
app/models/gluttonberg/asset_bulk_import.rb

Class Method Summary collapse

Class Method Details

.make_asset_for_entry(asset_params, current_user, entry, dir) ⇒ Object

taskes zip_entry and dir path. makes assets if its valid then also add it to @new_assets list its responsible of extracting entry and its deleting it. it use file name for making asset.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/models/gluttonberg/asset_bulk_import.rb', line 28

def self.make_asset_for_entry(asset_params, current_user, entry , dir)
  begin
    unless self.hidden_file_or_directory?(entry)
      entry_name = entry.name.gsub("/", "-")
      filename = File.join(dir,entry_name)
      entry.extract(filename)
      file = GbFile.init(filename)
      asset = prepare_asset(entry_name, file, current_user, asset_params)
      file.close
      FileUtils.remove_file(filename)
      asset
    end
  rescue => e
    Rails.logger.info e
  end
end

.open_zip_file_and_make_assets(asset_params, current_user) ⇒ Object

makes a new folder (name of the folder is current time stamp) inside tmp folder open zip folder iterate on opened zip folder and make assets for each entry using make_asset_for_entry method removes directory which we made inside tmp folder also removes zip tmp file



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/gluttonberg/asset_bulk_import.rb', line 8

def self.open_zip_file_and_make_assets(asset_params, current_user)
  new_assets = []
  zip = asset_params[:file]
  dir = create_tmp_folder
  begin
    Zip::File.open(zip.tempfile.path).each do |entry|
      asset = self.make_asset_for_entry(asset_params, current_user, entry , dir)
      new_assets << asset if asset && asset.kind_of?(Gluttonberg::Asset)
    end
    zip.tempfile.close
  rescue => e
   Rails.logger.info e
  end
  FileUtils.rm_r(dir)
  new_assets
end