master
 1require "temporary_storage"
 2
 3class BackupFile
 4  attr_reader :user, :backup_file
 5
 6  def initialize(user, backup_file)
 7    @user = user
 8    @backup_file = backup_file
 9  end
10
11  def process_later(program)
12    UploadStrongliftsBackupJob.perform_later(
13      user,
14      storage.store(backup_file),
15      program
16    ) if valid?
17  end
18
19  def valid?
20    extension = File.extname(backup_file.path)
21    extension.start_with?(".stronglifts") ||
22      extension.start_with?(".csv")
23  end
24
25  private
26
27  def storage
28    @storage ||= TemporaryStorage.new
29  end
30end