Class: Imap::Backup::Account::FolderBackup

Inherits:
Object
  • Object
show all
Defined in:
lib/imap/backup/account/folder_backup.rb

Overview

Implements backup for a single folder

Instance Method Summary collapse

Constructor Details

#initialize(account:, folder:, refresh: false) ⇒ FolderBackup

Returns a new instance of FolderBackup.

Parameters:

  • account (Account)

    the account that owns the folder

  • folder (Account::Folder)

    the online folder being backed up

  • refresh (Boolean) (defaults to: false)

    true to refresh metadata regardless of mirror mode



18
19
20
21
22
# File 'lib/imap/backup/account/folder_backup.rb', line 18

def initialize(account:, folder:, refresh: false)
  @account = 
  @folder = folder
  @refresh = refresh
end

Instance Method Details

#runvoid

This method returns an undefined value.

Runs the backup

Raises:

  • (RuntimeError)

    if the configured download strategy is incorrect



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/imap/backup/account/folder_backup.rb', line 27

def run
  Logger.logger.debug "Running backup for folder '#{folder.name}'"

  folder_ok = folder_ok?
  return if !folder_ok

  serializer.apply_uid_validity(folder.uid_validity)

  serializer.transaction do
    downloader.run
    FlagRefresher.new(folder, serializer).run if .mirror_mode || refresh
  end
  # After the transaction the serializer will have any appended messages
  # so we can check differences between the server and the local backup
  LocalOnlyMessageDeleter.new(folder, raw_serializer).run if .mirror_mode
  Logger.logger.debug "Backup for folder '#{folder.name}' complete"
end