app/services/decidim/votings/census/access_codes_exporter.rb in decidim-elections-0.28.2 vs app/services/decidim/votings/census/access_codes_exporter.rb in decidim-elections-0.28.3
- old
+ new
@@ -1,9 +1,8 @@
# frozen_string_literal: true
-require "seven_zip_ruby"
-require "zip"
+require "decidim/seven_zip_wrapper"
module Decidim
module Votings
module Census
# Public: Generates a 7z(seven zip) file with data files ready to be persisted
@@ -27,20 +26,23 @@
@path = File.expand_path path
@password = password
end
def export
- dirname = File.dirname(@path)
- FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
- File.open(@path, "wb") do |file|
- SevenZipRuby::Writer.open(file, password:) do |szw|
- szw.header_encryption = true
- szw.add_data(csv_data.read, format(FILE_NAME_PATTERN, voting_name: translated_attribute(dataset.voting.title).parameterize))
- end
- end
+ tmpdir = Dir.mktmpdir("votings-access-code-exporter")
+ save_voting_access_code_data(tmpdir)
+ SevenZipWrapper.compress_and_encrypt(filename: @path, password: @password, input_directory: tmpdir)
end
private
+
+ def save_voting_access_code_data(tmpdir)
+ file_name = File.join(
+ tmpdir,
+ format(FILE_NAME_PATTERN, voting_name: translated_attribute(dataset.voting.title).parameterize)
+ )
+ File.write(file_name, csv_data.read)
+ end
def csv_data
Decidim::Exporters::CSV.new(dataset.data, Decidim::Votings::Census::DatumSerializer).export
end
end