imap-backup 4.0.4 → 4.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/email/provider/apple_mail.rb +2 -2
- data/lib/email/provider/base.rb +8 -0
- data/lib/email/provider/fastmail.rb +2 -2
- data/lib/email/provider/gmail.rb +2 -2
- data/lib/email/provider/{default.rb → unknown.rb} +2 -3
- data/lib/email/provider.rb +2 -2
- data/lib/imap/backup/account.rb +103 -0
- data/lib/imap/backup/configuration/account.rb +1 -1
- data/lib/imap/backup/version.rb +1 -1
- data/spec/unit/email/provider/{default_spec.rb → base_spec.rb} +0 -6
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6eebcf60acbb2e97a007e5da03c63fb7c32e24413397f28d3ec9f94154b8def5
|
4
|
+
data.tar.gz: 5f81961b55811c8c9fadabf2def11e1e00ab8572fd844f44b8fda371aa190bbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ebb0d93413c0911487235584837f76f6409d66cc06a64ad9e7db7ec0a4ccca2694b9be363e02922bbf1c981d944a9772e6705190ad92b461252d7b57bf1e4b0
|
7
|
+
data.tar.gz: 6f29640122bf11c098050476e60caa073ebb868a0859624d6e7b74df435e85a1d6ebbcf964840058c6978a42d16034d86341741caead66d99722554ffc2ca4a3
|
data/lib/email/provider/gmail.rb
CHANGED
data/lib/email/provider.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require "email/provider/default"
|
2
1
|
require "email/provider/apple_mail"
|
3
2
|
require "email/provider/fastmail"
|
4
3
|
require "email/provider/gmail"
|
4
|
+
require "email/provider/unknown"
|
5
5
|
|
6
6
|
module Email; end
|
7
7
|
|
@@ -21,7 +21,7 @@ class Email::Provider
|
|
21
21
|
when address.end_with?("@me.com")
|
22
22
|
Email::Provider::AppleMail.new
|
23
23
|
else
|
24
|
-
Email::Provider::
|
24
|
+
Email::Provider::Unknown.new
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
module Imap::Backup
|
2
|
+
class Account
|
3
|
+
attr_reader :username
|
4
|
+
attr_reader :password
|
5
|
+
attr_reader :local_path
|
6
|
+
attr_reader :folders
|
7
|
+
attr_reader :server
|
8
|
+
attr_reader :connection_options
|
9
|
+
attr_reader :changes
|
10
|
+
attr_reader :marked_for_deletion
|
11
|
+
|
12
|
+
def initialize(options)
|
13
|
+
@username = options[:username]
|
14
|
+
@password = options[:password]
|
15
|
+
@local_path = options[:local_path]
|
16
|
+
@folders = options[:folders]
|
17
|
+
@server = options[:server]
|
18
|
+
@connection_options = options[:connection_options]
|
19
|
+
@changes = {}
|
20
|
+
@marked_for_deletion = false
|
21
|
+
end
|
22
|
+
|
23
|
+
def valid?
|
24
|
+
username && password
|
25
|
+
end
|
26
|
+
|
27
|
+
def modified?
|
28
|
+
changes.any?
|
29
|
+
end
|
30
|
+
|
31
|
+
def clear_changes!
|
32
|
+
@changes = {}
|
33
|
+
end
|
34
|
+
|
35
|
+
def mark_for_deletion!
|
36
|
+
@marked_for_deletion = true
|
37
|
+
end
|
38
|
+
|
39
|
+
def marked_for_deletion?
|
40
|
+
@marked_for_deletion
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_h
|
44
|
+
h = {
|
45
|
+
username: @username,
|
46
|
+
password: @password,
|
47
|
+
}
|
48
|
+
h[:local_path] = @local_path if @local_path
|
49
|
+
h[:folders] = @folders if @folders
|
50
|
+
h[:server] = @server if @server
|
51
|
+
h[:connection_options] = @connection_options if @connection_options
|
52
|
+
h
|
53
|
+
end
|
54
|
+
|
55
|
+
def username=(value)
|
56
|
+
update(:username, value)
|
57
|
+
end
|
58
|
+
|
59
|
+
def password=(value)
|
60
|
+
update(:password, value)
|
61
|
+
end
|
62
|
+
|
63
|
+
def local_path=(value)
|
64
|
+
update(:local_path, value)
|
65
|
+
end
|
66
|
+
|
67
|
+
def folders=(value)
|
68
|
+
raise "folders must be an Array" if !value.is_a?(Array)
|
69
|
+
update(:folders, value)
|
70
|
+
end
|
71
|
+
|
72
|
+
def server=(value)
|
73
|
+
update(:server, value)
|
74
|
+
end
|
75
|
+
|
76
|
+
def connection_options=(value)
|
77
|
+
parsed = JSON.parse(value)
|
78
|
+
update(:connection_options, parsed)
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def update(field, value)
|
84
|
+
if changes[field]
|
85
|
+
change = changes[field]
|
86
|
+
if change[:from] == value
|
87
|
+
changes.delete(field)
|
88
|
+
else
|
89
|
+
set_field!(field, value)
|
90
|
+
end
|
91
|
+
else
|
92
|
+
set_field!(field, value)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def set_field!(field, value)
|
97
|
+
key = :"@#{field}"
|
98
|
+
current = instance_variable_get(key)
|
99
|
+
changes[field] = {from: current, to: value}
|
100
|
+
instance_variable_set(key, value)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -148,7 +148,7 @@ module Imap::Backup
|
|
148
148
|
def default_server(username)
|
149
149
|
provider = Email::Provider.for_address(username)
|
150
150
|
|
151
|
-
if provider.is_a?(Email::Provider::
|
151
|
+
if provider.is_a?(Email::Provider::Unknown)
|
152
152
|
Kernel.puts "Can't decide provider for email address '#{username}'"
|
153
153
|
return nil
|
154
154
|
end
|
data/lib/imap/backup/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imap-backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Yates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -182,10 +182,12 @@ files:
|
|
182
182
|
- lib/email/mboxrd/message.rb
|
183
183
|
- lib/email/provider.rb
|
184
184
|
- lib/email/provider/apple_mail.rb
|
185
|
-
- lib/email/provider/
|
185
|
+
- lib/email/provider/base.rb
|
186
186
|
- lib/email/provider/fastmail.rb
|
187
187
|
- lib/email/provider/gmail.rb
|
188
|
+
- lib/email/provider/unknown.rb
|
188
189
|
- lib/imap/backup.rb
|
190
|
+
- lib/imap/backup/account.rb
|
189
191
|
- lib/imap/backup/account/connection.rb
|
190
192
|
- lib/imap/backup/account/folder.rb
|
191
193
|
- lib/imap/backup/cli.rb
|
@@ -239,7 +241,7 @@ files:
|
|
239
241
|
- spec/support/silence_logging.rb
|
240
242
|
- spec/unit/email/mboxrd/message_spec.rb
|
241
243
|
- spec/unit/email/provider/apple_mail_spec.rb
|
242
|
-
- spec/unit/email/provider/
|
244
|
+
- spec/unit/email/provider/base_spec.rb
|
243
245
|
- spec/unit/email/provider/fastmail_spec.rb
|
244
246
|
- spec/unit/email/provider/gmail_spec.rb
|
245
247
|
- spec/unit/email/provider_spec.rb
|
@@ -290,8 +292,8 @@ test_files:
|
|
290
292
|
- spec/fixtures/connection.yml
|
291
293
|
- spec/unit/email/provider/gmail_spec.rb
|
292
294
|
- spec/unit/email/provider/apple_mail_spec.rb
|
293
|
-
- spec/unit/email/provider/default_spec.rb
|
294
295
|
- spec/unit/email/provider/fastmail_spec.rb
|
296
|
+
- spec/unit/email/provider/base_spec.rb
|
295
297
|
- spec/unit/email/provider_spec.rb
|
296
298
|
- spec/unit/email/mboxrd/message_spec.rb
|
297
299
|
- spec/unit/imap/backup_spec.rb
|