lita-mailer 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/Gemfile +3 -0
- data/README.md +19 -0
- data/Rakefile +6 -0
- data/lib/lita-mailer.rb +12 -0
- data/lib/lita/handlers/mailer.rb +139 -0
- data/lita-mailer.gemspec +25 -0
- data/lita_config.rb +9 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/mailer_spec.rb +4 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +157 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b1a615e07e84529451e39472a4f1a01c04920a4c
|
4
|
+
data.tar.gz: c390495c4f2b87eda28727b69fa5758018a920e0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c60a2686cab9c89d1edbc1f993c27ae770d9e4bd22e06a9c527e893abffe38409bcdfe2ed3490a8e6819b25e069d594a9de359c9ca30eeb2e6739cdd0f7fcec8
|
7
|
+
data.tar.gz: 31be325e6646087f2620c135802d45708cff79c6b3ed51ea7a83dfe0d5ed47ad4605a209e5ff376076512542e1480d782c0e1d79b3ad7121d04c3acbbb7ab0c8
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# lita-mailer
|
2
|
+
|
3
|
+
TODO: Add a description of the plugin.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add lita-mailer to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "lita-mailer"
|
11
|
+
```
|
12
|
+
|
13
|
+
## Configuration
|
14
|
+
|
15
|
+
TODO: Describe any configuration attributes the plugin exposes.
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
TODO: Describe the plugin's features and how to use them.
|
data/Rakefile
ADDED
data/lib/lita-mailer.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require "lita/handlers/mailer"
|
8
|
+
|
9
|
+
Lita::Handlers::Mailer.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'mail'
|
3
|
+
|
4
|
+
module Lita
|
5
|
+
module Handlers
|
6
|
+
class Mailer < Handler
|
7
|
+
|
8
|
+
route(/^mail new/, :mail, command: true, help: { "mail new" => "Start building an email" })
|
9
|
+
route(/^mail list.+/, :list, command: true)
|
10
|
+
route(/^mail subj.+/, :subj, command: true)
|
11
|
+
route(/^mail body.+/, :body, command: true)
|
12
|
+
route(/^mail send.+/, :send, command: true)
|
13
|
+
route(/^mail check.+/, :check, command: true, help: { "mail check KEY" => "Check status of an email" })
|
14
|
+
|
15
|
+
def mail(resp)
|
16
|
+
key = string_gen
|
17
|
+
|
18
|
+
resp.reply_privately "KEY: `#{key}`"
|
19
|
+
resp.reply_privately "Next Step: lita mail list #{key} asdf@example.com"
|
20
|
+
|
21
|
+
redis.set(key, new_email)
|
22
|
+
|
23
|
+
after(600) do # after 10 minutes, invalidate key
|
24
|
+
email = JSON.parse(redis.get(key))
|
25
|
+
if email["valid"]
|
26
|
+
redis.del(key)
|
27
|
+
resp.reply_privately "FYI: Email with key '#{key}' now invalid."
|
28
|
+
else
|
29
|
+
# Just to make sure that we clean this up
|
30
|
+
redis.del(key)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def list(resp)
|
36
|
+
args = resp.args.dup
|
37
|
+
args.shift # get rid of "list"
|
38
|
+
|
39
|
+
key = args.shift # pop off the key
|
40
|
+
|
41
|
+
email = JSON.parse(redis.get(key))
|
42
|
+
|
43
|
+
email["list"] = args # everything else is the body
|
44
|
+
redis.set(key, email.to_json)
|
45
|
+
|
46
|
+
resp.reply_privately "Mail list for #{key} set to: \n #{blockify(email["list"].join("\n"))}"
|
47
|
+
resp.reply_privately "Next Step: lita mail subj #{key} SUBJ"
|
48
|
+
end
|
49
|
+
|
50
|
+
def subj(resp)
|
51
|
+
args = resp.args.dup
|
52
|
+
args.shift # get rid of "subj"
|
53
|
+
|
54
|
+
key = args.shift # pop off the key
|
55
|
+
|
56
|
+
email = JSON.parse(redis.get(key))
|
57
|
+
|
58
|
+
email["subj"] = args # everything else is the body
|
59
|
+
redis.set(key, email.to_json)
|
60
|
+
|
61
|
+
resp.reply_privately "Subject for `#{key}` set to: \n #{blockify(email["subj"].join(" "))}"
|
62
|
+
resp.reply_privately "Next Step: lita mail body #{key} STUFF"
|
63
|
+
end
|
64
|
+
|
65
|
+
def body(resp)
|
66
|
+
args = resp.args.dup
|
67
|
+
args.shift # get rid of "body"
|
68
|
+
|
69
|
+
key = args.shift # pop off the key
|
70
|
+
|
71
|
+
email = JSON.parse(redis.get(key))
|
72
|
+
|
73
|
+
email["body"] = args # everything else is the body
|
74
|
+
redis.set(key, email.to_json)
|
75
|
+
|
76
|
+
resp.reply_privately "Body for `#{key}` set to: \n #{blockify(email["body"].join(" "))}"
|
77
|
+
resp.reply_privately "Next Step: lita mail send #{key}"
|
78
|
+
end
|
79
|
+
|
80
|
+
def send(resp)
|
81
|
+
args = resp.args.dup
|
82
|
+
args.shift # get rid of "send"
|
83
|
+
|
84
|
+
key = args.shift # pop off the key
|
85
|
+
|
86
|
+
email = JSON.parse(redis.get(key))
|
87
|
+
|
88
|
+
email["list"].each do |recipent|
|
89
|
+
Mail.deliver do
|
90
|
+
from 'lita@peopleadmin.com'
|
91
|
+
to recipent
|
92
|
+
subject email["subj"].join(" ")
|
93
|
+
body email["body"].join(" ") + "\n\nSent by your friendly Lita Bot"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def check(resp)
|
99
|
+
args = resp.args.dup
|
100
|
+
args.shift # get rid of "check"
|
101
|
+
|
102
|
+
key = args.shift # pop off the key
|
103
|
+
|
104
|
+
email = JSON.parse(redis.get(key))
|
105
|
+
|
106
|
+
out = String.new
|
107
|
+
out += email["valid"] ? "Email valid... yes\n" : "Email valid... FALSE\n"
|
108
|
+
out += email["list"] ? "Email list.... yes\n" : "Email list.... FALSE\n"
|
109
|
+
out += email["subj"] ? "Email subj.... yes\n" : "Email subj.... FALSE\n"
|
110
|
+
out += email["body"] ? "Email body.... yes\n" : "Email body.... FALSE\n"
|
111
|
+
|
112
|
+
resp.reply_privately blockify(out)
|
113
|
+
end
|
114
|
+
|
115
|
+
private
|
116
|
+
|
117
|
+
def string_gen
|
118
|
+
('a'..'z').to_a.shuffle[0,8].join
|
119
|
+
end
|
120
|
+
|
121
|
+
def blockify(text)
|
122
|
+
"```\n#{text}\n```"
|
123
|
+
end
|
124
|
+
|
125
|
+
def new_email
|
126
|
+
{
|
127
|
+
valid: true,
|
128
|
+
list: nil,
|
129
|
+
subj: nil,
|
130
|
+
body: nil,
|
131
|
+
sender: nil
|
132
|
+
}.to_json
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
Lita.register_handler(Mailer)
|
138
|
+
end
|
139
|
+
end
|
data/lita-mailer.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-mailer"
|
3
|
+
spec.version = "0.1.0"
|
4
|
+
spec.authors = ["Devon Finninger"]
|
5
|
+
spec.email = ["devon.finninger@peopleadmin.com"]
|
6
|
+
spec.description = "Send emails from Lita"
|
7
|
+
spec.summary = "Send emails from Lita"
|
8
|
+
spec.homepage = "https://github.com/dfinninger/lita-mailer"
|
9
|
+
spec.license = "MIT"
|
10
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.3"
|
18
|
+
spec.add_runtime_dependency "mail", "~> 2.6.3"
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
spec.add_development_dependency "pry-byebug"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rack-test"
|
24
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
25
|
+
end
|
data/lita_config.rb
ADDED
data/locales/en.yml
ADDED
data/spec/spec_helper.rb
ADDED
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-mailer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Devon Finninger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mail
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.6.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.6.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rack-test
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.0.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.0.0
|
111
|
+
description: Send emails from Lita
|
112
|
+
email:
|
113
|
+
- devon.finninger@peopleadmin.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- Gemfile
|
120
|
+
- README.md
|
121
|
+
- Rakefile
|
122
|
+
- lib/lita-mailer.rb
|
123
|
+
- lib/lita/handlers/mailer.rb
|
124
|
+
- lita-mailer.gemspec
|
125
|
+
- lita_config.rb
|
126
|
+
- locales/en.yml
|
127
|
+
- spec/lita/handlers/mailer_spec.rb
|
128
|
+
- spec/spec_helper.rb
|
129
|
+
- templates/.gitkeep
|
130
|
+
homepage: https://github.com/dfinninger/lita-mailer
|
131
|
+
licenses:
|
132
|
+
- MIT
|
133
|
+
metadata:
|
134
|
+
lita_plugin_type: handler
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
require_paths:
|
138
|
+
- lib
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
requirements: []
|
150
|
+
rubyforge_project:
|
151
|
+
rubygems_version: 2.4.3
|
152
|
+
signing_key:
|
153
|
+
specification_version: 4
|
154
|
+
summary: Send emails from Lita
|
155
|
+
test_files:
|
156
|
+
- spec/lita/handlers/mailer_spec.rb
|
157
|
+
- spec/spec_helper.rb
|