jmcarbo-imapstore 0.4.7 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/imapstore.rb +1 -1
- data/lib/imapstore/imapstore.rb +54 -29
- metadata +7 -7
data/Rakefile
CHANGED
@@ -9,11 +9,11 @@ $hoe = Hoe.new('imapstore', IMAPSTORE::VERSION) do |p|
|
|
9
9
|
#p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
10
10
|
p.rubyforge_name = p.name # TODO this is default value
|
11
11
|
p.extra_deps = [
|
12
|
-
['rdoc','>= 2.2.0'],
|
13
12
|
['tmail','>= 1.2.3'],
|
14
13
|
['getoptions','>= 0.1']
|
15
14
|
]
|
16
15
|
p.extra_dev_deps = [
|
16
|
+
['rdoc','>= 2.2.0'],
|
17
17
|
['newgem', ">= #{::Newgem::VERSION}"]
|
18
18
|
]
|
19
19
|
|
data/lib/imapstore.rb
CHANGED
data/lib/imapstore/imapstore.rb
CHANGED
@@ -244,11 +244,7 @@ END
|
|
244
244
|
|
245
245
|
def transverse(target_folder = "INBOX", glob = /.+/, recursive = false, dot_files = false, folder_only=false)
|
246
246
|
file_list=[]
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
begin
|
247
|
+
#begin
|
252
248
|
target_folder = "" if target_folder == "/"
|
253
249
|
|
254
250
|
puts "..... fetching #{target_folder} " if @verbose
|
@@ -260,7 +256,9 @@ END
|
|
260
256
|
if ((recursive == true) && (target_folder == "" ? true : folder.name.match(/^#{target_folder}(\/.+)*$/))) || (folder.name == target_folder)
|
261
257
|
puts "..... got hit transversing #{folder.name} " if @verbose
|
262
258
|
file_list << folder.name
|
263
|
-
|
259
|
+
if(block_given?)
|
260
|
+
yield(folder.name, nil, nil, nil, nil, nil)
|
261
|
+
end
|
264
262
|
|
265
263
|
if((!folder.attr.include? :Noselect) && (folder_only==false))
|
266
264
|
|
@@ -270,45 +268,72 @@ END
|
|
270
268
|
a = @imap.fetch(message_id, "RFC822")
|
271
269
|
mail = TMail::Mail.parse(a[0].attr["RFC822"])
|
272
270
|
file_name = mail.subject.match(/^[^\[]+\[([^\]]+)\]/)[1]
|
273
|
-
|
274
|
-
|
271
|
+
puts "Considering #{file_name}" if @verbose
|
272
|
+
|
273
|
+
parts = mail.subject.match(/^[^\[]+\[[^\]]+\]\(([0-9]+)\-([0-9]+)\)/)
|
274
|
+
file_part = parts[1]
|
275
|
+
max_parts = parts[2]
|
276
|
+
if file_name.match(glob)
|
277
|
+
file_list << folder.name + "/" + file_name
|
278
|
+
yield(folder.name, file_name, message_id, mail, file_part, max_parts) if block_given?
|
279
|
+
end
|
275
280
|
end
|
276
281
|
end
|
277
282
|
end
|
278
283
|
end
|
279
|
-
rescue
|
280
|
-
end
|
284
|
+
#rescue
|
285
|
+
#end
|
281
286
|
|
282
287
|
file_list.sort
|
283
288
|
end
|
284
289
|
|
285
|
-
|
290
|
+
def ls(target_folder = "INBOX", glob = /.+/, recursive = false, dot_files = false)
|
286
291
|
transverse(target_folder, glob, recursive, dot_files, false)
|
287
|
-
|
288
|
-
|
289
|
-
def get_file(target_folder = "INBOX", glob = /.+/, recursive = false, dot_files = false)
|
290
|
-
file_list = transverse(target_folder, glob, recursive, dot_files, false) do |folder, file, message_id, mail, file_name|
|
291
|
-
|
292
|
-
if mail && mail.multipart? then
|
293
|
-
mail.parts.each do |m|
|
294
|
-
if !m.main_type
|
295
|
-
append_dir = folder.sub(/^#{target_folder}\/*/,"")
|
296
|
-
if append_dir != ""
|
297
|
-
Dir.mkdir(append_dir) if !File.exists? append_dir
|
292
|
+
end
|
298
293
|
|
299
|
-
|
300
|
-
|
301
|
-
|
294
|
+
def get_file(target_folder = "INBOX", glob = /.+/, recursive = false, dot_files = false)
|
295
|
+
multipart_files = Hash.new
|
296
|
+
file_list = transverse(target_folder, glob, recursive, dot_files, false) do |folder, file_name, message_id, mail, file_part, max_parts|
|
297
|
+
if(file_name && mail.parts)
|
298
|
+
mail.parts.each do |m|
|
299
|
+
if !m.main_type
|
300
|
+
append_dir = folder
|
301
|
+
append_dir.sub!(/^#{target_folder}\/*/,"")
|
302
|
+
if append_dir != ""
|
303
|
+
Dir.mkdir(append_dir) if !File.exists? append_dir
|
304
|
+
file_name = append_dir + "/" + file_name
|
305
|
+
end
|
306
|
+
|
307
|
+
if(file_part)
|
308
|
+
multipart_files[file_name] = max_parts if !multipart_files[file_name]
|
309
|
+
file_name = file_name + "_#{file_part}_#{max_parts}"
|
310
|
+
end
|
311
|
+
puts "Getting file #{file_name}" if @verbose
|
312
|
+
|
313
|
+
File.open(file_name,"w") do |f|
|
314
|
+
f.write(m.body)
|
302
315
|
end
|
303
|
-
|
316
|
+
end
|
317
|
+
end
|
304
318
|
end
|
305
319
|
end
|
306
|
-
|
320
|
+
|
321
|
+
multipart_files.each do |key,value|
|
322
|
+
puts "Fusing #{key} ---- #{value}" if @verbose
|
323
|
+
File.open(key,"w") do |f|
|
324
|
+
1.upto(value.to_i) do |step|
|
325
|
+
f.write(File.open("#{key}_#{step}_#{value}").read)
|
326
|
+
File.unlink("#{key}_#{step}_#{value}")
|
327
|
+
end
|
328
|
+
end
|
329
|
+
end
|
330
|
+
return file_list
|
331
|
+
end
|
307
332
|
|
308
333
|
|
309
334
|
|
310
335
|
def rm_file(target_folder = "INBOX", glob = /.+/, recursive = false, dot_files = false)
|
311
|
-
file_list = transverse(target_folder, glob, false, dot_files, false) do |folder,
|
336
|
+
file_list = transverse(target_folder, glob, false, dot_files, false) do |folder, file_name, message_id, mail, file_part, max_parts|
|
312
337
|
if file && message_id
|
313
338
|
@imap.store(message_id, "+FLAGS", [:Deleted])
|
314
339
|
@imap.expunge
|
@@ -326,7 +351,7 @@ END
|
|
326
351
|
folders = []
|
327
352
|
puts "..... Deleting #{target_folder}" if @verbose
|
328
353
|
|
329
|
-
transverse(target_folder, /.+/, recursive, dot_files, false) do |folder, file, message_id, mail,
|
354
|
+
transverse(target_folder, /.+/, recursive, dot_files, false) do |folder, file, message_id, mail, file_part, max_parts|
|
330
355
|
puts "..... assigning dir #{folder} for removal" if @verbose
|
331
356
|
folders << folder if !(folders.include? folder)
|
332
357
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jmcarbo-imapstore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joan Marc Carbo Arnau
|
@@ -13,31 +13,31 @@ date: 2009-01-17 00:00:00 -08:00
|
|
13
13
|
default_executable: imapstore
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: tmail
|
17
17
|
version_requirement:
|
18
18
|
version_requirements: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 1.2.3
|
23
23
|
version:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
|
-
name:
|
25
|
+
name: getoptions
|
26
26
|
version_requirement:
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: 1
|
31
|
+
version: "0.1"
|
32
32
|
version:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: rdoc
|
35
35
|
version_requirement:
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.2.0
|
41
41
|
version:
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: newgem
|