cinch-imap 0.0.3 → 0.0.4

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.
Files changed (3) hide show
  1. data/README.md +12 -3
  2. data/lib/cinch/plugins/imap.rb +22 -5
  3. metadata +2 -2
data/README.md CHANGED
@@ -2,12 +2,17 @@ Cinch-Imap
2
2
  ==========
3
3
  The Cinch Imap Plugin. Poll an IMAP mailbox at a defined interval.
4
4
 
5
- 0.0.3 Changes
5
+ Change Log
6
+ ----------
7
+ 0.0.4
8
+ - Added from_rewrites configuration option
9
+ - Added !monitor showconfig command
10
+ - Added !monitor version command
11
+
12
+ 0.0.3
6
13
  -------
7
-
8
14
  - Added configurable prefix based on subject match.
9
15
  - Moved "mark messages read" to a configurable option.
10
- - Simplfied from information
11
16
 
12
17
  Required Configuration
13
18
  ----------------------
@@ -52,6 +57,10 @@ Example Configuration
52
57
  :port => 993,
53
58
  :ssl => true,
54
59
  :subject_matches => {'ERROR' => '!!', 'SUCCESS' => '..'},
60
+ :from_rewrites => {
61
+ 'this@suchalong.silly.address' => 'foo',
62
+ 'another@address.that.bugs.me' => 'bugger',
63
+ },
55
64
  }
56
65
  end
57
66
 
@@ -5,27 +5,36 @@ module Cinch
5
5
  class Imap
6
6
  include Cinch::Plugin
7
7
 
8
+ VERSION='0.0.4'
9
+
8
10
  match /monitor (on|off)/
9
11
  match /monitor status/, method: :status
12
+ match /monitor showconfig/, method: :showconfig
10
13
  match /monitor clear/, method: :clear
11
14
  match /monitor interval (\d+)/, method: :interval
15
+ match /monitor version/, method: :about
12
16
  match /monitor$/, method: :usage
13
17
 
14
18
  def initialize(*args)
15
19
  super
16
20
  @mail_host = config[:host]
17
21
  @mail_user = config[:user]
18
- @mail_pass = config[:password]
22
+ @mail_password = config[:password]
19
23
  @mail_folder = config[:folder] || 'INBOX'
20
24
  @mail_port = config[:port] || 143
21
25
  @mail_ssl = config[:ssl] || false
22
26
  @mark_as_read = config[:mark_as_read ] || true
23
27
  @interval = config[:interval] || 300
24
28
  @subject_matches = config[:subject_matches] || {}
29
+ @from_rewrites = config[:from_rewrites] || {}
25
30
  @messages_seen = 0
26
31
  @started = Time.now
27
32
  end
28
33
 
34
+ def about(m)
35
+ m.reply "Looks like I'm on #{VERSION} #{m.user.nick}"
36
+ end
37
+
29
38
  def interval (seconds)
30
39
  @interval = seconds
31
40
  @monitor = @interval > 0
@@ -35,6 +44,12 @@ module Cinch
35
44
  @messages_seen = 0
36
45
  end
37
46
 
47
+ def showconfig(m)
48
+ config.each do |k, v|
49
+ m.reply "#{k} is #{config[k]}" unless k == :password
50
+ end
51
+ end
52
+
38
53
  def status(m)
39
54
  now = Time.now
40
55
  days = ((now - @started)/(3600 * 24)).to_i
@@ -76,14 +91,16 @@ module Cinch
76
91
 
77
92
  background_job do
78
93
  imap = Net::IMAP.new(@mail_host, @mail_port, @mail_ssl)
79
- imap.login(@mail_user, @mail_pass)
94
+ imap.login(@mail_user, @mail_password)
80
95
  imap.select(@mail_folder)
81
96
  get_messages(imap) do |from, subj|
82
- message = "#{from} #{subj}"
97
+ @from_rewrites.each do |k, v|
98
+ from =~ /#{k}/ ? message_from = "#{v}" : message_from = from
99
+ end
83
100
  @subject_matches.each do |k, v|
84
- message = "#{v} #{message}" if subj =~ /#{k}/
101
+ subj =~ /#{k}/ ? message_prefix = "#{v}" : message_prefix = ''
85
102
  end
86
- m.reply message
103
+ m.reply "#{message_prefix} #{message_from} #{subj}"
87
104
  end
88
105
  imap.disconnect
89
106
  end if @monitor
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - windowsrefund