Class: Imap::Backup::Account::Connection
- Inherits:
-
Object
- Object
- Imap::Backup::Account::Connection
show all
- Defined in:
- lib/imap/backup/account/connection.rb,
lib/imap/backup/account/connection/folder_names.rb,
lib/imap/backup/account/connection/backup_folders.rb
Defined Under Namespace
Classes: BackupFolders, ClientFactory, FolderNames
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(account) ⇒ Connection
Returns a new instance of Connection.
14
15
16
17
|
# File 'lib/imap/backup/account/connection.rb', line 14
def initialize(account)
@account = account
reset
end
|
Instance Attribute Details
#account ⇒ Object
Returns the value of attribute account.
12
13
14
|
# File 'lib/imap/backup/account/connection.rb', line 12
def account
@account
end
|
Instance Method Details
#backup_folders ⇒ Object
23
24
25
26
|
# File 'lib/imap/backup/account/connection.rb', line 23
def backup_folders
@backup_folders ||=
Account::Connection::BackupFolders.new(client: client, account: account).run
end
|
#disconnect ⇒ Object
80
81
82
83
|
# File 'lib/imap/backup/account/connection.rb', line 80
def disconnect
client.disconnect if @client
reset
end
|
#folder_names ⇒ Object
19
20
21
|
# File 'lib/imap/backup/account/connection.rb', line 19
def folder_names
@folder_names ||= Account::Connection::FolderNames.new(client: client, account: account).run
end
|
#local_folders ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/imap/backup/account/connection.rb', line 60
def local_folders
return enum_for(:local_folders) if !block_given?
ensure_account_folder
glob = File.join(account.local_path, "**", "*.imap")
base = Pathname.new(account.local_path)
Pathname.glob(glob) do |path|
name = path.relative_path_from(base).to_s[0..-6]
serializer = Serializer.new(account.local_path, name)
folder = Account::Folder.new(self, name)
yield serializer, folder
end
end
|
#reconnect ⇒ Object
85
86
87
|
# File 'lib/imap/backup/account/connection.rb', line 85
def reconnect
disconnect
end
|
#reset ⇒ Object
89
90
91
92
93
|
# File 'lib/imap/backup/account/connection.rb', line 89
def reset
@backup_folders = nil
@client = nil
@folder_names = nil
end
|
#restore ⇒ Object
74
75
76
77
78
|
# File 'lib/imap/backup/account/connection.rb', line 74
def restore
local_folders do |serializer, folder|
Uploader.new(folder, serializer).run
end
end
|
#run_backup ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/imap/backup/account/connection.rb', line 36
def run_backup
Logger.logger.debug "Running backup of account: #{account.username}"
client
ensure_account_folder
each_folder do |folder, serializer|
next if !folder.exist?
Logger.logger.debug "[#{folder.name}] running backup"
serializer.apply_uid_validity(folder.uid_validity)
begin
Downloader.new(
folder,
serializer,
multi_fetch_size: account.multi_fetch_size,
reset_seen_flags_after_fetch: account.reset_seen_flags_after_fetch
).run
rescue Net::IMAP::ByeResponseError
reconnect
retry
end
end
end
|
#status ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/imap/backup/account/connection.rb', line 28
def status
ensure_account_folder
backup_folders.map do |folder|
s = Serializer.new(account.local_path, folder.name)
{name: folder.name, local: s.uids, remote: folder.uids}
end
end
|