imap_processor 1.2 → 1.3
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +6 -0
- data/lib/imap_processor.rb +7 -4
- data/lib/imap_processor/idle.rb +2 -4
- data/lib/net/imap/idle.rb +20 -11
- metadata +3 -3
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
data/lib/imap_processor.rb
CHANGED
@@ -3,6 +3,7 @@ require 'optparse'
|
|
3
3
|
require 'net/imap'
|
4
4
|
require 'net/imap/date'
|
5
5
|
require 'imap_sasl_plain'
|
6
|
+
require 'yaml'
|
6
7
|
|
7
8
|
##
|
8
9
|
# IMAPProcessor is a client for processing messages on an IMAP server.
|
@@ -20,7 +21,7 @@ class IMAPProcessor
|
|
20
21
|
##
|
21
22
|
# The version of IMAPProcessor you are using
|
22
23
|
|
23
|
-
VERSION = '1.
|
24
|
+
VERSION = '1.3'
|
24
25
|
|
25
26
|
##
|
26
27
|
# Base IMAPProcessor error class
|
@@ -131,7 +132,7 @@ class IMAPProcessor
|
|
131
132
|
options.merge! YAML.load_file(opts_file)
|
132
133
|
end
|
133
134
|
|
134
|
-
options[:SSL]
|
135
|
+
options[:SSL] = true unless options.key? :SSL
|
135
136
|
options[:Username] ||= ENV['USER']
|
136
137
|
options[:Root] ||= nil
|
137
138
|
options[:Verbose] ||= false
|
@@ -266,7 +267,7 @@ Example ~/.#{opts_file_name}:
|
|
266
267
|
options[:Password].nil? or
|
267
268
|
options[:Boxes].nil? or
|
268
269
|
required_options.any? { |k,(v,m)| options[k].nil? } then
|
269
|
-
$stderr.puts
|
270
|
+
$stderr.puts op
|
270
271
|
$stderr.puts
|
271
272
|
$stderr.puts "Host name not set" if options[:Host].nil?
|
272
273
|
$stderr.puts "Password not set" if options[:Password].nil?
|
@@ -287,6 +288,8 @@ Example ~/.#{opts_file_name}:
|
|
287
288
|
options = process_args args
|
288
289
|
client = new(options, &block)
|
289
290
|
client.run
|
291
|
+
rescue Interrupt
|
292
|
+
exit
|
290
293
|
rescue SystemExit
|
291
294
|
raise
|
292
295
|
rescue Exception => e
|
@@ -295,7 +298,7 @@ Example ~/.#{opts_file_name}:
|
|
295
298
|
|
296
299
|
exit 1
|
297
300
|
ensure
|
298
|
-
client.imap.logout if client
|
301
|
+
client.imap.logout if client and client.imap
|
299
302
|
end
|
300
303
|
|
301
304
|
##
|
data/lib/imap_processor/idle.rb
CHANGED
@@ -62,14 +62,12 @@ imap_idle lists messages added or expunged from a mailbox
|
|
62
62
|
|
63
63
|
def show_messages_in(mailbox, uids)
|
64
64
|
connect do |connection|
|
65
|
-
|
65
|
+
imap = connection.imap
|
66
66
|
|
67
|
-
|
67
|
+
imap.select mailbox
|
68
68
|
|
69
69
|
show_messages uids
|
70
70
|
end
|
71
|
-
ensure
|
72
|
-
@imap = nil
|
73
71
|
end
|
74
72
|
|
75
73
|
end
|
data/lib/net/imap/idle.rb
CHANGED
@@ -6,7 +6,7 @@ class Net::IMAP
|
|
6
6
|
# Sends an IDLE command that waits for notifications of new or expunged
|
7
7
|
# messages. Yields responses from the server during the IDLE.
|
8
8
|
#
|
9
|
-
# Use
|
9
|
+
# Use #idle_done to leave IDLE.
|
10
10
|
|
11
11
|
def idle(&response_handler)
|
12
12
|
raise LocalJumpError, "no block given" unless response_handler
|
@@ -17,23 +17,32 @@ class Net::IMAP
|
|
17
17
|
tag = Thread.current[:net_imap_tag] = generate_tag
|
18
18
|
put_string "#{tag} IDLE#{CRLF}"
|
19
19
|
|
20
|
-
add_response_handler response_handler
|
21
|
-
|
22
20
|
begin
|
23
|
-
|
24
|
-
rescue LocalJumpError # can't break cross-threads or something
|
25
|
-
ensure
|
26
|
-
unless response then
|
27
|
-
put_string "DONE#{CRLF}"
|
28
|
-
response = get_tagged_response tag
|
29
|
-
end
|
21
|
+
add_response_handler response_handler
|
30
22
|
|
23
|
+
@idle_done_cond = new_cond
|
24
|
+
@idle_done_cond.wait
|
25
|
+
@idle_done_cond = nil
|
26
|
+
ensure
|
31
27
|
remove_response_handler response_handler
|
28
|
+
put_string "DONE#{CRLF}"
|
29
|
+
response = get_tagged_response tag
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
35
33
|
response
|
36
34
|
end
|
37
35
|
|
38
|
-
|
36
|
+
##
|
37
|
+
# Leaves IDLE
|
38
|
+
|
39
|
+
def idle_done
|
40
|
+
raise Net::IMAP::Error, 'not during idle' unless @idle_done_cond
|
41
|
+
|
42
|
+
synchronize do
|
43
|
+
@idle_done_cond.signal
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end unless Net::IMAP.method_defined? :idle
|
39
48
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imap_processor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "1.
|
4
|
+
version: "1.3"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Hodel
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
x52qPcexcYZR7w==
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2009-
|
33
|
+
date: 2009-08-04 00:00:00 -07:00
|
34
34
|
default_executable:
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
requirements: []
|
107
107
|
|
108
108
|
rubyforge_project: seattlerb
|
109
|
-
rubygems_version: 1.3.
|
109
|
+
rubygems_version: 1.3.5
|
110
110
|
signing_key:
|
111
111
|
specification_version: 3
|
112
112
|
summary: IMAPProcessor is a client for processing messages on an IMAP server
|
metadata.gz.sig
CHANGED
Binary file
|