multi_notifier 0.0.1 → 0.2.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 +4 -4
- data/Gemfile +1 -0
- data/README.md +38 -2
- data/lib/multi_notifier/builder.rb +3 -3
- data/lib/multi_notifier/{adapter.rb → middleware.rb} +1 -1
- data/lib/multi_notifier/{adapters → middlewares}/mail.rb +3 -3
- data/lib/multi_notifier/middlewares/travis.rb +29 -0
- data/lib/multi_notifier/version.rb +1 -1
- data/spec/multi_notifier/builder_spec.rb +2 -2
- data/spec/multi_notifier/{adapters → middleware}/mail_spec.rb +3 -3
- data/spec/multi_notifier/middleware/travis_spec.rb +14 -0
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18b7272fe9939ff98ed918124e371a36c7578a4d
|
4
|
+
data.tar.gz: 59486d4edfcbd4ae618480405cd45837e387dc8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96d5a244e31af51af0247be7b2237ea145fd75ebb72f3720f021246bd40053c02266e389ee5c0142e99c6bac3bf4bc2b69f002c24b3f421c7fce2852f252005b
|
7
|
+
data.tar.gz: 0b30d55e430443b34929413251abfd2ef2a37510d50c0cd5e2a1751429a349cb24e4d834eed27a3cf862e55d5966d1df68e013ffef156b605a89c34ef1889104
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# MultiNotifier
|
2
2
|
|
3
|
-
|
3
|
+
MultiNotifier provides a minimal, modular and adaptable interface for sending notifications in Ruby.
|
4
|
+
It unifies and distills the API for sending notifications to multiple sources with [middlewares](http://en.wikipedia.org/wiki/Middleware).
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -18,7 +19,42 @@ Or install it yourself as:
|
|
18
19
|
|
19
20
|
## Usage
|
20
21
|
|
21
|
-
|
22
|
+
```ruby
|
23
|
+
MultiNotifier.build do |builder|
|
24
|
+
builder.use :mail, :from => "from@owenou.com", :to => "to@owenou.com", :subject => "MultiNotifier notification"
|
25
|
+
builder.use :campfire, :access_token => "123", :room => "123", :message => "Hello world"
|
26
|
+
end.notify_all!
|
27
|
+
```
|
28
|
+
|
29
|
+
## Middlewares
|
30
|
+
|
31
|
+
### Mail
|
32
|
+
|
33
|
+
The [mail middleware](https://github.com/jingweno/multi_notifier/blob/master/lib/multi_notifier/middlewares/mail.rb) sends email with the provided settings.
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
builder.adapter :mail,
|
37
|
+
:delivery => {
|
38
|
+
:method => Rails.configuration.action_mailer.delivery_method, # delivery method
|
39
|
+
:settings => Rails.configuration.action_mailer.send("#{Rails.configuration.action_mailer.delivery_method}_settings") # deivery settings
|
40
|
+
},
|
41
|
+
:from => "notifications@aclgrc.com", # from email
|
42
|
+
:to => "devs@workpapers.com", # to email
|
43
|
+
:subject => "subject", # email subject
|
44
|
+
:text_body => mail_text_body, # email body in text
|
45
|
+
:html_body => mail_html_body # email body in html
|
46
|
+
```
|
47
|
+
|
48
|
+
### Travis
|
49
|
+
|
50
|
+
The [travis middleware](https://github.com/jingweno/multi_notifier/blob/master/lib/multi_notifier/middlewares/travis.rb) restart the latest build with the provided repo.
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
builder.adapter :travis,
|
54
|
+
:access_token => "123", # travis-ci access token
|
55
|
+
:repo => "jingweno/multiple_notifier", # travis-ci repo in the format of OWNER/REPO
|
56
|
+
:travis_pro => true # whether this repo is built in travis-ci pro
|
57
|
+
```
|
22
58
|
|
23
59
|
## Contributing
|
24
60
|
|
@@ -8,9 +8,9 @@ module MultiNotifier
|
|
8
8
|
@adapters = []
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
require "multi_notifier/
|
13
|
-
adapter = "MultiNotifier::
|
11
|
+
def use(type, configs = {})
|
12
|
+
require "multi_notifier/middlewares/#{type}"
|
13
|
+
adapter = "MultiNotifier::Middlewares::#{type.to_s.classify}".constantize
|
14
14
|
adapters << adapter.new(configs)
|
15
15
|
|
16
16
|
adapter
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require "action_mailer" unless defined?(::ActionMailer)
|
2
|
-
require "multi_notifier/
|
2
|
+
require "multi_notifier/middleware"
|
3
3
|
|
4
4
|
module MultiNotifier
|
5
|
-
module
|
6
|
-
class Mail <
|
5
|
+
module Middlewares
|
6
|
+
class Mail < Middleware
|
7
7
|
class DeliveryValidator < ::ActiveModel::Validator
|
8
8
|
def validate(model)
|
9
9
|
if model.delivery.present?
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "travis" unless defined?(::Travis)
|
2
|
+
require "multi_notifier/middleware"
|
3
|
+
|
4
|
+
module MultiNotifier
|
5
|
+
module Middlewares
|
6
|
+
class Travis < Middleware
|
7
|
+
attr_accessor :access_token, :repo, :travis_pro
|
8
|
+
|
9
|
+
validates_presence_of :access_token, :repo
|
10
|
+
|
11
|
+
def notify
|
12
|
+
host = travis_pro? ? ::Travis::Client::PRO_URI : ::Travis::Client::ORG_URI
|
13
|
+
client = travis_client(host, access_token)
|
14
|
+
repo = client.repo(repo)
|
15
|
+
repo.last_build.restart
|
16
|
+
end
|
17
|
+
|
18
|
+
def travis_pro?
|
19
|
+
!!travis_pro
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def travis_client(host, access_token)
|
25
|
+
::Travis::Client.new "uri" => host, "access_token" => access_token
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -3,10 +3,10 @@ require "spec_helper"
|
|
3
3
|
describe MultiNotifier::Builder do
|
4
4
|
it "builds adapter by types" do
|
5
5
|
builder = described_class.new
|
6
|
-
builder.
|
6
|
+
builder.use :mail
|
7
7
|
|
8
8
|
builder.adapters.size.should == 1
|
9
9
|
adapter = builder.adapters.first
|
10
|
-
adapter.class.name.should == "MultiNotifier::
|
10
|
+
adapter.class.name.should == "MultiNotifier::Middlewares::Mail"
|
11
11
|
end
|
12
12
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
|
-
require "multi_notifier/
|
2
|
+
require "multi_notifier/middlewares/mail"
|
3
3
|
|
4
|
-
describe MultiNotifier::
|
4
|
+
describe MultiNotifier::Middlewares::Mail do
|
5
5
|
context "validations" do
|
6
6
|
[:delivery, :from, :to, :subject, :text_body].each do |field|
|
7
7
|
it "#{field} can't be blank" do
|
@@ -22,7 +22,7 @@ describe MultiNotifier::Adapters::Mail do
|
|
22
22
|
|
23
23
|
context "notify" do
|
24
24
|
it "sends email" do
|
25
|
-
mail = MultiNotifier::
|
25
|
+
mail = MultiNotifier::Middlewares::Mail.new
|
26
26
|
mail.delivery = {
|
27
27
|
:method => :test
|
28
28
|
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "multi_notifier/middlewares/travis"
|
3
|
+
|
4
|
+
describe MultiNotifier::Middlewares::Travis do
|
5
|
+
context "validations" do
|
6
|
+
[:access_token, :repo].each do |field|
|
7
|
+
it "#{field} can't be blank" do
|
8
|
+
instance = described_class.new
|
9
|
+
instance.should be_invalid
|
10
|
+
instance.errors[field].should include("can't be blank")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi_notifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jingwen Owen Ou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07
|
11
|
+
date: 2013-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -37,14 +37,16 @@ files:
|
|
37
37
|
- README.md
|
38
38
|
- Rakefile
|
39
39
|
- lib/multi_notifier.rb
|
40
|
-
- lib/multi_notifier/adapter.rb
|
41
|
-
- lib/multi_notifier/adapters/mail.rb
|
42
40
|
- lib/multi_notifier/builder.rb
|
41
|
+
- lib/multi_notifier/middleware.rb
|
42
|
+
- lib/multi_notifier/middlewares/mail.rb
|
43
|
+
- lib/multi_notifier/middlewares/travis.rb
|
43
44
|
- lib/multi_notifier/model.rb
|
44
45
|
- lib/multi_notifier/version.rb
|
45
46
|
- multi_notifier.gemspec
|
46
|
-
- spec/multi_notifier/adapters/mail_spec.rb
|
47
47
|
- spec/multi_notifier/builder_spec.rb
|
48
|
+
- spec/multi_notifier/middleware/mail_spec.rb
|
49
|
+
- spec/multi_notifier/middleware/travis_spec.rb
|
48
50
|
- spec/spec_helper.rb
|
49
51
|
homepage: ''
|
50
52
|
licenses:
|
@@ -66,11 +68,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
68
|
version: '0'
|
67
69
|
requirements: []
|
68
70
|
rubyforge_project:
|
69
|
-
rubygems_version: 2.0.
|
71
|
+
rubygems_version: 2.0.3
|
70
72
|
signing_key:
|
71
73
|
specification_version: 4
|
72
74
|
summary: Simple and flexbile library for sending notifications
|
73
75
|
test_files:
|
74
|
-
- spec/multi_notifier/adapters/mail_spec.rb
|
75
76
|
- spec/multi_notifier/builder_spec.rb
|
77
|
+
- spec/multi_notifier/middleware/mail_spec.rb
|
78
|
+
- spec/multi_notifier/middleware/travis_spec.rb
|
76
79
|
- spec/spec_helper.rb
|