Class: Imap::Backup::Downloader

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Downloader.



9
10
11
12
13
14
# File 'lib/imap/backup/downloader.rb', line 9

def initialize(folder, serializer, multi_fetch_size: 1)
  @folder = folder
  @serializer = serializer
  @multi_fetch_size = multi_fetch_size
  @uids = nil
end

Instance Attribute Details

#folderObject (readonly)

Returns the value of attribute folder.



5
6
7
# File 'lib/imap/backup/downloader.rb', line 5

def folder
  @folder
end

#multi_fetch_sizeObject (readonly)

Returns the value of attribute multi_fetch_size.



7
8
9
# File 'lib/imap/backup/downloader.rb', line 7

def multi_fetch_size
  @multi_fetch_size
end

#serializerObject (readonly)

Returns the value of attribute serializer.



6
7
8
# File 'lib/imap/backup/downloader.rb', line 6

def serializer
  @serializer
end

Instance Method Details

#runObject



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/imap/backup/downloader.rb', line 16

def run
  debug "#{uids.count} new messages"

  uids.each_slice(multi_fetch_size).with_index do |block, i|
    multifetch_failed = download_block(block, i)
    raise MultiFetchFailedError if multifetch_failed
  end
rescue MultiFetchFailedError
  @count = nil
  @multi_fetch_size = 1
  @uids = nil
  retry
end