Module: AssetZipImportable::Importable::Extractions

Defined in:
app/models/concerns/asset_zip_importable/importable/extractions.rb

Constant Summary collapse

ACCEPT_FILE_TYPES =
%w(JPEG GIF PNG PDF)

Instance Method Summary collapse

Instance Method Details

#accept_file_type?(file_path) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'app/models/concerns/asset_zip_importable/importable/extractions.rb', line 36

def accept_file_type?(file_path)
  ACCEPT_FILE_TYPES.include?(_file_type(file_path))
end

#downloadObject



6
7
8
9
10
11
# File 'app/models/concerns/asset_zip_importable/importable/extractions.rb', line 6

def download
  FileUtils.mkdir_p(zip_file_dir)
  File.open(zip_file, 'wb') do |opened_zip_file|
    opened_zip_file << uploaded_zip_file.read
  end
end

#extractObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/models/concerns/asset_zip_importable/importable/extractions.rb', line 13

def extract
  return unless FileTest.exist?(zip_file)

  Zip::ZipFile.open(zip_file) do |opened_zip_file|
    opened_zip_file.each do |entry|
      file_path = zip_file_dir + '/' + entry.to_s

      FileUtils::mkdir_p(File.dirname(file_path))
      opened_zip_file.extract(entry, file_path) { true }

      if accept_file_type?(file_path)
        self.total_number ||= 0
        self.total_number += 1
      else
        unless FileTest.directory?(file_path)
          File.delete(file_path)
        end
      end
    end
  end
  save!
end