imap_archiver 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/imap_archiver/archiver.rb +9 -5
- data/spec/archiver_spec.rb +45 -1
- data/spec/imap_archiver_spec.rb +1 -1
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
@@ -9,7 +9,7 @@ module ImapArchiver
|
|
9
9
|
@logger.level = Logger::WARN
|
10
10
|
if debug
|
11
11
|
@logger.level = Logger::DEBUG
|
12
|
-
@
|
12
|
+
@logger.debug "Debugging enabled."
|
13
13
|
end
|
14
14
|
@logger.debug "Loading config"
|
15
15
|
self.load_config(config_file)
|
@@ -74,9 +74,11 @@ module ImapArchiver
|
|
74
74
|
connection.select(folder)
|
75
75
|
# puts "will search 1"
|
76
76
|
msgs_to_archive = connection.search(conditions)
|
77
|
+
@logger.debug "#{msgs_to_archive.size} msgs to archive"
|
77
78
|
if msgs_to_archive.size > 0
|
78
79
|
@logger.debug "will archive #{msgs_to_archive.size} messages"
|
79
80
|
if connection.list("",current_archive_folder).nil?
|
81
|
+
@logger.debug "creating archive folder #{current_archive_folder}"
|
80
82
|
connection.create(current_archive_folder)
|
81
83
|
if connection.capability.include?("ACL")
|
82
84
|
self.archive_folder_acl.each do |key,value|
|
@@ -84,9 +86,11 @@ module ImapArchiver
|
|
84
86
|
end
|
85
87
|
end
|
86
88
|
end
|
87
|
-
|
88
|
-
|
89
|
-
|
89
|
+
while !msgs_to_archive.empty? && (msgs = msgs_to_archive.slice!(0,100))
|
90
|
+
connection.copy(msgs, current_archive_folder)
|
91
|
+
connection.store(msgs, "+FLAGS",[:Deleted])
|
92
|
+
@msg_count += msgs.size
|
93
|
+
end
|
90
94
|
connection.expunge
|
91
95
|
end
|
92
96
|
if connection.search(["BEFORE", since_date.strftime("%d-%b-%Y"), "SEEN", "NOT", "FLAGGED"]).size > 0
|
@@ -118,7 +122,7 @@ module ImapArchiver
|
|
118
122
|
end
|
119
123
|
|
120
124
|
def self.run(config_file,debug=false)
|
121
|
-
self.new(config_file).start
|
125
|
+
self.new(config_file,debug).start
|
122
126
|
end
|
123
127
|
end
|
124
128
|
end
|
data/spec/archiver_spec.rb
CHANGED
@@ -108,4 +108,48 @@ describe ImapArchiver::Archiver do
|
|
108
108
|
@archiver.folder_list.should == [mock1]
|
109
109
|
end
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
|
+
describe "copying mails" do
|
113
|
+
before do
|
114
|
+
ImapArchiver::Config.expects(:load_config)
|
115
|
+
ImapArchiver::Archiver.any_instance.expects(:config_valid?)
|
116
|
+
@archiver = ImapArchiver::Archiver.new("configfile")
|
117
|
+
@archiver.imap_server = "mailserver"
|
118
|
+
@archiver.username = "user"
|
119
|
+
@archiver.password = "password"
|
120
|
+
@archiver.auth_mech = 'CRAM-MD5'
|
121
|
+
@archiver.archive_folder = 'archive'
|
122
|
+
@archiver.base_folder = 'Public Folders'
|
123
|
+
# @archiver.expects(:connect)
|
124
|
+
@archiver.connection = mock
|
125
|
+
@archiver.connection.stubs(:capability).returns([])
|
126
|
+
@archiver.connection.stubs(:list).returns(mock)
|
127
|
+
@archiver.connection.stubs(:select)
|
128
|
+
@archiver.connection.stubs(:store)
|
129
|
+
@archiver.connection.stubs(:expunge)
|
130
|
+
@archiver.instance_variable_set("@msg_count",0)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should copy archivable msgs in chunks" do
|
134
|
+
#@archiver.folders_to_archive = ["Public Folders/test1"]
|
135
|
+
#@archiver.connection.expects(:list).with('',"Public Folders/test1").returns([mock1 = mock(:name => "Public Folders/test1")])
|
136
|
+
since_date = Date.today.months_ago(3).beginning_of_month
|
137
|
+
before_date= Date.today.months_ago(2).beginning_of_month
|
138
|
+
conditions = ["SINCE", since_date.strftime("%d-%b-%Y"), "BEFORE", before_date.strftime("%d-%b-%Y"), "SEEN", "NOT", "FLAGGED"]
|
139
|
+
@archiver.connection.expects(:search).with(conditions).returns((1..996).to_a)
|
140
|
+
@archiver.connection.expects(:search).with(["BEFORE", since_date.strftime("%d-%b-%Y"), "SEEN", "NOT", "FLAGGED"]).returns([])
|
141
|
+
@archiver.connection.expects(:copy).with((1..100).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
142
|
+
@archiver.connection.expects(:copy).with((101..200).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
143
|
+
@archiver.connection.expects(:copy).with((201..300).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
144
|
+
@archiver.connection.expects(:copy).with((301..400).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
145
|
+
@archiver.connection.expects(:copy).with((401..500).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
146
|
+
@archiver.connection.expects(:copy).with((501..600).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
147
|
+
@archiver.connection.expects(:copy).with((601..700).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
148
|
+
@archiver.connection.expects(:copy).with((701..800).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
149
|
+
@archiver.connection.expects(:copy).with((801..900).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
150
|
+
@archiver.connection.expects(:copy).with((901..996).to_a, "archive/test1/#{since_date.strftime("%b %Y")}")
|
151
|
+
@archiver.archive_folder_between_dates("Public Folders/test1",since_date,before_date) #if folder.name =~ /^Public Folders\/Team\//
|
152
|
+
@archiver.instance_variable_get("@msg_count").should == 996
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
data/spec/imap_archiver_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imap_archiver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jelle Helsen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-06 00:00:00 +01:00
|
19
19
|
default_executable: imap_archiver
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|