Sha256: 9f0ea726f2d979c6d2588da066c3f1ee89d3035385f4e0a938ecb24912f5bab3

Contents?: true

Size: 931 Bytes

Versions: 2

Compression:

Stored size: 931 Bytes

Contents

# frozen_string_literal: true

module Decidim
  class DataPortabilityExportJob < ApplicationJob
    queue_as :default

    def perform(user, export_format = ::Decidim::DataPortabilityExporter::DEFAULT_EXPORT_FORMAT)
      filename = "#{SecureRandom.urlsafe_base64}.zip"
      path = Rails.root.join("tmp/#{filename}")
      password = SecureRandom.urlsafe_base64

      generate_zip_file(user, path, password, export_format)
      save_or_upload_file(user, path)

      ExportMailer.data_portability_export(user, filename, password).deliver_later

      # Deletes temporary file
      File.delete(path)
    end

    private

    def generate_zip_file(user, path, password, export_format)
      DataPortabilityExporter.new(user, path, password, export_format).export
    end

    def save_or_upload_file(user, path)
      user.data_portability_file.attach(io: File.open(path, "rb"), filename: File.basename(path))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
decidim-core-0.26.10 app/jobs/decidim/data_portability_export_job.rb
decidim-core-0.26.9 app/jobs/decidim/data_portability_export_job.rb