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