SMS 0.0.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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +49 -0
- data/Rakefile +1 -0
- data/bin/sms +15 -0
- data/lib/sms.rb +75 -0
- data/lib/sms/version.rb +3 -0
- data/sms.gemspec +24 -0
- metadata +89 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# SMS
|
2
|
+
|
3
|
+
Add a Kernel#sms method so you can SMS at any point
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add
|
8
|
+
|
9
|
+
gem 'SMS'
|
10
|
+
|
11
|
+
to your `Gemfile` or `gem install SMS`
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
require 'sms'
|
16
|
+
|
17
|
+
sms "Hello", 4151231234
|
18
|
+
sms "Hello", "4151231234"
|
19
|
+
sms "Hello", ["4151231234", "4157657651"]
|
20
|
+
sms ["Hello", "there"], 4151231234
|
21
|
+
|
22
|
+
You must have three environment variables set, `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN` and `TWILIO_FROM`. To do so, add this to your .bash_profile (or some thing that sets up some env vars for you):
|
23
|
+
|
24
|
+
export TWILIO_RECIPIENTS=4151231234
|
25
|
+
export TWILIO_FROM=4151231234
|
26
|
+
export TWILIO_ACCOUNT_ID=ACxxxxxxx
|
27
|
+
export TWILIO_AUTH_TOKEN=xxxxx
|
28
|
+
|
29
|
+
If you wish to programically setup those variables, do the following:
|
30
|
+
|
31
|
+
require 'sms'
|
32
|
+
|
33
|
+
SMS.twilio_account_sid = "AC818237237282aadff88d7ef8c"
|
34
|
+
SMS.twilio_auth_token = "xxxx"
|
35
|
+
SMS.twilio_from = "1231231234"
|
36
|
+
|
37
|
+
sms "hi", "4151231234"
|
38
|
+
|
39
|
+
As well, you can have default recipients (via the , so you can leave off the number all the time
|
40
|
+
|
41
|
+
SMS.default_recipients = "4151231234"
|
42
|
+
sms "hello there!"
|
43
|
+
|
44
|
+
|
45
|
+
## Binary usage
|
46
|
+
|
47
|
+
There is also an `sms` binary. Just call it with the message you wish to send! All arguments past the first one are treated like recipients.
|
48
|
+
|
49
|
+
#> sms "hello there" 4151231234
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/sms
ADDED
data/lib/sms.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
require "sms/version"
|
2
|
+
require 'twilio-ruby'
|
3
|
+
|
4
|
+
class SMS
|
5
|
+
|
6
|
+
INSTANCE = SMS.new
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def method_missing(m, *args, &blk)
|
10
|
+
INSTANCE.send(m, *args, &blk)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_writer :twilio_account_id, :twilio_auth_token, :default_recipients, :twilio_from
|
15
|
+
|
16
|
+
def client
|
17
|
+
@client ||= begin
|
18
|
+
setup!
|
19
|
+
Twilio::REST::Client.new(twilio_account_id, twilio_auth_token)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def default_recipients
|
24
|
+
@default_recipients ||= ENV['TWILIO_RECIPIENTS']
|
25
|
+
end
|
26
|
+
|
27
|
+
def twilio_from
|
28
|
+
@twilio_from ||= ENV['TWILIO_FROM']
|
29
|
+
end
|
30
|
+
|
31
|
+
def twilio_account_id
|
32
|
+
@twilio_account_id ||= ENV['TWILIO_ACCOUNT_ID']
|
33
|
+
end
|
34
|
+
|
35
|
+
def twilio_auth_token
|
36
|
+
@twilio_auth_token ||= ENV['TWILIO_AUTH_TOKEN']
|
37
|
+
end
|
38
|
+
|
39
|
+
def message(messages, *more)
|
40
|
+
opts = more.last.is_a?(Hash) ? more.pop : nil
|
41
|
+
recipients = opts && (opts[:recipients] || opts[:recipient]) || more.first || default_recipients
|
42
|
+
raise "You must set a recipient. Please put your recipient number" +
|
43
|
+
" in the environment variable as TWILIO_RECIPIENTS or set it with SMS.default_recipients= or " +
|
44
|
+
" as it as an option to your #message call." unless recipients
|
45
|
+
recipients = Array(recipients)
|
46
|
+
recipients.map! { |r| r.to_s }
|
47
|
+
from = opts && opts[:from] || twilio_from
|
48
|
+
raise "You must set a twlio from number. Please put your from number" +
|
49
|
+
" in the environment variable as TWILIO_FROM or set it with SMS.from=" unless from
|
50
|
+
messages = Array(messages)
|
51
|
+
messages.map! { |m| m.to_s }
|
52
|
+
messages.each do |message|
|
53
|
+
message_parameters = { :body => message }
|
54
|
+
recipients.each do |recipient|
|
55
|
+
message_parameters[:to] = recipient
|
56
|
+
message_parameters[:from] = from
|
57
|
+
client.account.sms.messages.create(message_parameters)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
def setup!
|
64
|
+
!twilio_account_id.nil? or raise "You must set a twlio account id. Please put your account id" +
|
65
|
+
" in the environment variable as TWILIO_ACCOUNT_ID or set it with SMS.twilio_account_id="
|
66
|
+
!twilio_auth_token.nil? or raise "You must set a twlio auth token. Please put your auth token" +
|
67
|
+
" in the environment variable as TWILIO_AUTH_TOKEN or set it with SMS.twilio_auth_token="
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
module Kernel
|
72
|
+
def sms(message, recipients = nil)
|
73
|
+
SMS::INSTANCE.message(message, recipients)
|
74
|
+
end
|
75
|
+
end
|
data/lib/sms/version.rb
ADDED
data/sms.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "sms/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "SMS"
|
7
|
+
s.version = SMS::VERSION
|
8
|
+
s.authors = ["Josh Hull"]
|
9
|
+
s.email = ["joshbuddy@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/joshbuddy/sms"
|
11
|
+
s.summary = %q{Add an sms method to Kernel, because sms is the new puts}
|
12
|
+
s.description = %q{Add an sms method to Kernel, because sms is the new puts.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "sms"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
s.add_runtime_dependency "twilio-ruby", '>= 3.5.1'
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: SMS
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Josh Hull
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-02-16 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: twilio-ruby
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 17
|
29
|
+
segments:
|
30
|
+
- 3
|
31
|
+
- 5
|
32
|
+
- 1
|
33
|
+
version: 3.5.1
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Add an sms method to Kernel, because sms is the new puts.
|
37
|
+
email:
|
38
|
+
- joshbuddy@gmail.com
|
39
|
+
executables:
|
40
|
+
- sms
|
41
|
+
extensions: []
|
42
|
+
|
43
|
+
extra_rdoc_files: []
|
44
|
+
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- Gemfile
|
48
|
+
- README.md
|
49
|
+
- Rakefile
|
50
|
+
- bin/sms
|
51
|
+
- lib/sms.rb
|
52
|
+
- lib/sms/version.rb
|
53
|
+
- sms.gemspec
|
54
|
+
homepage: https://github.com/joshbuddy/sms
|
55
|
+
licenses: []
|
56
|
+
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
hash: 3
|
68
|
+
segments:
|
69
|
+
- 0
|
70
|
+
version: "0"
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 3
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
version: "0"
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
rubyforge_project: sms
|
83
|
+
rubygems_version: 1.8.15
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: Add an sms method to Kernel, because sms is the new puts
|
87
|
+
test_files: []
|
88
|
+
|
89
|
+
has_rdoc:
|