Class: Imap::Backup::Downloader

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

Overview

Downloads as yet undownloaded emails from an account’s server

Defined Under Namespace

Classes: MultiFetchFailedError

Instance Method Summary collapse

Constructor Details

#initialize(folder, serializer, multi_fetch_size: 1, reset_seen_flags_after_fetch: false) ⇒ Downloader

Returns a new instance of Downloader.

 11 12 13 14 15 16 17 18 19
# File 'lib/imap/backup/downloader.rb', line 11 def initialize(folder, serializer, multi_fetch_size: 1, reset_seen_flags_after_fetch: false) @folder = folder @serializer = serializer @multi_fetch_size = multi_fetch_size @reset_seen_flags_after_fetch = reset_seen_flags_after_fetch @folder_uids = nil @serializer_uids = nil @uids = nil end 

Instance Method Details

#runvoid

This method returns an undefined value.

Runs the downloader

 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
# File 'lib/imap/backup/downloader.rb', line 23 def run debug("#{serializer_uids.count} messages already downloaded") debug("#{folder_uids.count} messages on server") local_only_count = (serializer_uids - folder_uids).count if local_only_count.positive? debug("#{local_only_count} downloaded messages no longer on server") end if uids.none? debug("no new messages on server — skipping") return end info("#{uids.count} new messages") download rescue Net::IMAP::ByeResponseError folder.client.reconnect retry end