broadcast 0.2.0 → 0.2.1

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.
data/README.markdown CHANGED
@@ -3,7 +3,7 @@ Broadcast [![Build Status](http://travis-ci.org/futuresimple/broadcast.png)](htt
3
3
 
4
4
  A broadcasting microframework making publishing of messages to different services easy and DRY.
5
5
 
6
-
6
+ Current version is 0.2.1.
7
7
 
8
8
  Use Cases
9
9
  ------------
@@ -226,6 +226,26 @@ It is based on the assumption that the user associated with the access token has
226
226
  end
227
227
  ```
228
228
 
229
+ ### SMS
230
+
231
+ Broadcast::Medium::SMS is based on the SMSified gem.
232
+ You must create an account on http://smsified.com before sending SMS text messages (developer accounts are free).
233
+ You will be given a phone number to use as your very own FROM sms number. This number, along with your username and password,
234
+ must be added to your config during setup. The To address is the address of the mobile number that you would like to send the SMS message to.
235
+
236
+ #### Example setup
237
+
238
+ ```ruby
239
+ Broadcast.setup do |config|
240
+ config.sms { |sms|
241
+ sms.username = 'myaccount'
242
+ sms.password = 'mypass'
243
+ sms.from = '16025551212'
244
+ sms.to = '14801234567'
245
+ }
246
+ end
247
+ ```
248
+
229
249
  Copyright
230
250
  ---------
231
251
 
data/broadcast.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'broach'
22
22
  s.add_dependency 'shout-bot'
23
23
  s.add_dependency 'koala'
24
+ s.add_dependency 'smsified'
24
25
 
25
26
  s.files = `git ls-files`.split("\n")
26
27
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,6 +1,6 @@
1
1
  require 'broach'
2
2
 
3
- class Broadcast::Medium::Campfire < Broadcast::Medium::Oauth
3
+ class Broadcast::Medium::Campfire < Broadcast::Medium
4
4
 
5
5
  def publish(message)
6
6
  Broach.settings = { 'account' => options.subdomain, 'token' => options.token, 'use_ssl' => true }
@@ -1,6 +1,6 @@
1
1
  require 'mail'
2
2
 
3
- class Broadcast::Medium::Email < Broadcast::Medium::Oauth
3
+ class Broadcast::Medium::Email < Broadcast::Medium
4
4
 
5
5
  def publish(message)
6
6
  recipients = options.recipients.is_a?(Array) ? options.recipients : [options.recipients]
@@ -18,5 +18,5 @@ class Broadcast::Medium::Email < Broadcast::Medium::Oauth
18
18
  mail.deliver
19
19
  end
20
20
  end
21
-
21
+
22
22
  end
@@ -1,6 +1,6 @@
1
1
  require 'koala'
2
2
 
3
- class Broadcast::Medium::Facebook < Broadcast::Medium::Oauth
3
+ class Broadcast::Medium::Facebook < Broadcast::Medium
4
4
 
5
5
  def publish(message)
6
6
  # We do not rescue any Koala exceptions to make them crash the sendout
@@ -1,6 +1,6 @@
1
1
  require 'shout-bot'
2
2
 
3
- class Broadcast::Medium::Irc < Broadcast::Medium::Oauth
3
+ class Broadcast::Medium::Irc < Broadcast::Medium
4
4
  def publish(message)
5
5
  uri = "irc://#{options.username}"
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'xmpp4r'
2
2
 
3
- class Broadcast::Medium::Jabber < Broadcast::Medium::Oauth
3
+ class Broadcast::Medium::Jabber < Broadcast::Medium
4
4
 
5
5
  class Client
6
6
 
@@ -0,0 +1,16 @@
1
+ require 'smsified'
2
+
3
+ class Broadcast::Medium::Sms < Broadcast::Medium
4
+
5
+ def publish(message)
6
+
7
+ oneapi = Smsified::OneAPI.new :username => options.username,
8
+ :password => options.password
9
+
10
+ oneapi.send_sms :address => options.to,
11
+ :message => message.body,
12
+ :sender_address => options.from
13
+
14
+ end
15
+
16
+ end
@@ -1,5 +1,5 @@
1
1
  class Broadcast
2
2
 
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
 
5
5
  end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Broadcast::Medium::Sms do
4
+
5
+ describe '.new' do
6
+
7
+ it "should create a new instance with options provided in config" do
8
+ medium = Broadcast::Medium::Sms.new
9
+ medium.options.username.should == 'myaccount'
10
+ medium.options.password.should == 'mypass'
11
+ medium.options.to.should == '22222222222'
12
+ end
13
+
14
+ it "should prioritize options argument over options provided in config" do
15
+ medium = Broadcast::Medium::Sms.new(:to => '33333333333')
16
+ medium.options.username.should == 'myaccount'
17
+ medium.options.password.should == 'mypass'
18
+ medium.options.to.should == '33333333333'
19
+ end
20
+
21
+ end
22
+
23
+ describe '#publish' do
24
+
25
+ before do
26
+ @mock_client = mock
27
+ Smsified::OneAPI.should_receive(:new).with(:username => 'myaccount', :password => 'mypass').and_return(@mock_client)
28
+ end
29
+
30
+ it "should send the sms" do
31
+ message = Broadcast::Message::SpecWithContent.new
32
+ @mock_client.should_receive(:send_sms).with({:message=>message.body, :sender_address=>"11111111111", :address=>"22222222222"})
33
+ Broadcast::Medium::Sms.new.publish(message)
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -45,4 +45,12 @@ Broadcast.setup { |config|
45
45
  irc.port = '6667'
46
46
  irc.channel = 'broadcast'
47
47
  }
48
+
49
+ config.sms { |sms|
50
+ sms.username = 'myaccount'
51
+ sms.password = 'mypass'
52
+ sms.from = '11111111111'
53
+ sms.to = '22222222222'
54
+ }
55
+
48
56
  }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: broadcast
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marcin Bunsch
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-06-01 00:00:00 Z
19
+ date: 2011-06-11 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: hashie
@@ -116,6 +116,20 @@ dependencies:
116
116
  version: "0"
117
117
  prerelease: false
118
118
  requirement: *id007
119
+ - !ruby/object:Gem::Dependency
120
+ name: smsified
121
+ type: :runtime
122
+ version_requirements: &id008 !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
131
+ prerelease: false
132
+ requirement: *id008
119
133
  description: A broadcasting microframework making publishing of messages to different services easy
120
134
  email:
121
135
  - marcin@futuresimple.com
@@ -142,6 +156,7 @@ files:
142
156
  - lib/broadcast/media/jabber.rb
143
157
  - lib/broadcast/media/log.rb
144
158
  - lib/broadcast/media/oauth.rb
159
+ - lib/broadcast/media/sms.rb
145
160
  - lib/broadcast/media/twitter.rb
146
161
  - lib/broadcast/media/yammer.rb
147
162
  - lib/broadcast/medium.rb
@@ -156,6 +171,7 @@ files:
156
171
  - spec/lib/broadcast/media/jabber_spec.rb
157
172
  - spec/lib/broadcast/media/log_spec.rb
158
173
  - spec/lib/broadcast/media/oauth_spec.rb
174
+ - spec/lib/broadcast/media/sms_spec.rb
159
175
  - spec/lib/broadcast/media/twitter_spec.rb
160
176
  - spec/lib/broadcast/media/yammer_spec.rb
161
177
  - spec/lib/broadcast/medium_spec.rb
@@ -205,6 +221,7 @@ test_files:
205
221
  - spec/lib/broadcast/media/jabber_spec.rb
206
222
  - spec/lib/broadcast/media/log_spec.rb
207
223
  - spec/lib/broadcast/media/oauth_spec.rb
224
+ - spec/lib/broadcast/media/sms_spec.rb
208
225
  - spec/lib/broadcast/media/twitter_spec.rb
209
226
  - spec/lib/broadcast/media/yammer_spec.rb
210
227
  - spec/lib/broadcast/medium_spec.rb