tatango-sms 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/History.txt +7 -0
- data/Manifest.txt +7 -0
- data/README.txt +52 -0
- data/lib/tatango_sms.rb +36 -0
- data/lib/tatango_sms/mo.rb +99 -0
- data/lib/tatango_sms/mt.rb +77 -0
- data/test/test_tatango_sms.rb +1 -0
- metadata +74 -0
data/History.txt
ADDED
data/Manifest.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
= TatangoSMS
|
2
|
+
|
3
|
+
* http://tatango.com/developers
|
4
|
+
|
5
|
+
== Description
|
6
|
+
|
7
|
+
The Tatango Messaging Gateway provides a way for you to utilize our streamlined messaging pipeline to send out SMS messages to your users. SMS messages are advertisement-supported, so we can provide this service at zero cost to the developer.
|
8
|
+
|
9
|
+
== Sign-up
|
10
|
+
|
11
|
+
In order to use the Tatango SMS Gateway, you will need to sign up for a gateway key. You can sign up at http://tatango.com/developers/gateway.
|
12
|
+
|
13
|
+
== Install
|
14
|
+
|
15
|
+
gem install tatango-sms
|
16
|
+
|
17
|
+
== Requirements
|
18
|
+
|
19
|
+
TatangoSMS::MO requires +mongrel+ and +activesupport+. Neither are listed as a gem dependency because TatangoSMS::MT does not require them.
|
20
|
+
|
21
|
+
TatangoSMS::MT requires <tt>digest/md5</tt>, <tt>net/http</tt>, and +uri+ from ruby core.
|
22
|
+
|
23
|
+
== Documentation
|
24
|
+
|
25
|
+
TatangoSMS::MT:: for mobile-terminated support
|
26
|
+
TatangoSMS::MO:: for mobile-oriented support
|
27
|
+
|
28
|
+
more documentation can be found at: http://tatango.com/developers/gateway/docs
|
29
|
+
|
30
|
+
== Support
|
31
|
+
|
32
|
+
Have questions? You can usually find the Tatango engineering team at ##tatango on Freenode.
|
33
|
+
|
34
|
+
More information here: http://tatango.com/developers/connect
|
35
|
+
|
36
|
+
== Example
|
37
|
+
|
38
|
+
require 'rubygems'
|
39
|
+
require 'tatango_sms/mt'
|
40
|
+
require 'tatango_sms/mo'
|
41
|
+
|
42
|
+
# setup a mobile terminated object with our Tatango SMS Gateway key and password
|
43
|
+
mt = TatangoSMS::MT.new('key', 'password')
|
44
|
+
|
45
|
+
# run a server on port 3333 to accept incoming messages from Tatango
|
46
|
+
server = TatangoSMS:MO.server('0.0.0.0', '3333')
|
47
|
+
TatangoSMS::MO.receive(server, '/') do |phone_number, content|
|
48
|
+
# send the reversed message back
|
49
|
+
mt.send(phone_number, content.reverse)
|
50
|
+
end
|
51
|
+
|
52
|
+
server.run.join
|
data/lib/tatango_sms.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# This file is part of TatangoSMS.
|
2
|
+
#
|
3
|
+
# TatangoSMS is a simple library to facilitate the use of the Tatango
|
4
|
+
# Messaging Gateway. The Tatango Messaging Gateway provides a way for you to utilize our
|
5
|
+
# streamlined messaging pipeline to send out SMS messages to your users.
|
6
|
+
# SMS messages are advertisement-supported, so we can provide this
|
7
|
+
# service at zero cost to the developer.
|
8
|
+
#
|
9
|
+
# More information can be found at http://tatango.com/developers/gateway
|
10
|
+
#
|
11
|
+
# Copyright (c) 2008, Tatango Inc.
|
12
|
+
# All rights reserved.
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# TatangoSMS is free software: you can redistribute it and/or modify
|
16
|
+
# it under the terms of the GNU Lesser Public License as published by
|
17
|
+
# the Free Software Foundation, either version 3 of the License, or
|
18
|
+
# (at your option) any later version.
|
19
|
+
#
|
20
|
+
# TatangoSMS is distributed in the hope that it will be useful,
|
21
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
22
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
23
|
+
# GNU Lesser Public License for more details.
|
24
|
+
#
|
25
|
+
# You should have received a copy of the GNU Lesser Public License
|
26
|
+
# along with TatangoSMS. If not, see <http://www.gnu.org/licenses/>.
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
require 'tatango_sms/mo'
|
31
|
+
require 'tatango_sms/mt'
|
32
|
+
|
33
|
+
|
34
|
+
module TatangoSMS
|
35
|
+
VERSION = '0.1'
|
36
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# This file is part of TatangoSMS.
|
2
|
+
#
|
3
|
+
# TatangoSMS is a simple library to facilitate the use of the Tatango
|
4
|
+
# Messaging Gateway. The Tatango Messaging Gateway provides a way for you to utilize our
|
5
|
+
# streamlined messaging pipeline to send out SMS messages to your users.
|
6
|
+
# SMS messages are advertisement-supported, so we can provide this
|
7
|
+
# service at zero cost to the developer.
|
8
|
+
#
|
9
|
+
# More information can be found at http://tatango.com/developers/gateway
|
10
|
+
#
|
11
|
+
# Copyright (c) 2008, Tatango Inc.
|
12
|
+
# All rights reserved.
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# TatangoSMS is free software: you can redistribute it and/or modify
|
16
|
+
# it under the terms of the GNU Lesser Public License as published by
|
17
|
+
# the Free Software Foundation, either version 3 of the License, or
|
18
|
+
# (at your option) any later version.
|
19
|
+
#
|
20
|
+
# TatangoSMS is distributed in the hope that it will be useful,
|
21
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
22
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
23
|
+
# GNU Lesser Public License for more details.
|
24
|
+
#
|
25
|
+
# You should have received a copy of the GNU Lesser Public License
|
26
|
+
# along with TatangoSMS. If not, see <http://www.gnu.org/licenses/>.
|
27
|
+
|
28
|
+
|
29
|
+
require 'rubygems'
|
30
|
+
require 'mongrel'
|
31
|
+
require 'activesupport' # for Hash.from_xml
|
32
|
+
|
33
|
+
|
34
|
+
module TatangoSMS
|
35
|
+
|
36
|
+
# TatangoSMS::MO makes it easy to receive messages from the Tatango SMS Gateway
|
37
|
+
#
|
38
|
+
# Example:
|
39
|
+
# require 'tatango_sms/mo'
|
40
|
+
# server = TatangoSMS::MO.server('0.0.0.0', '3333')
|
41
|
+
# TatangoSMS::MO.receive(server, '/') do |phone_number, content|
|
42
|
+
# # parse content and do something
|
43
|
+
# # maybe even send a message back with TatangoSMS::MT.send(...)
|
44
|
+
# end
|
45
|
+
# server.run.join
|
46
|
+
class MO
|
47
|
+
class << self
|
48
|
+
|
49
|
+
# setup a new mongrel server to accept MOs
|
50
|
+
#
|
51
|
+
# returns a Mongrel::HttpServer
|
52
|
+
#
|
53
|
+
# Examples:
|
54
|
+
# server = Mongrel::MO.server('0.0.0.0', '3333')
|
55
|
+
# # see MO::receive for how to register a block of code to receive messages
|
56
|
+
# server.run # run the server
|
57
|
+
# server.acceptor.join # the acceptor thread can be found here
|
58
|
+
def server(*args)
|
59
|
+
Mongrel::HttpServer.new(*args)
|
60
|
+
end
|
61
|
+
|
62
|
+
# register a block of code to receive messages
|
63
|
+
#
|
64
|
+
# expects a Mongrel::HttpServer. use MO.server or just use one you already have?
|
65
|
+
#
|
66
|
+
# NOTE: +content+ will be exactly what the user entered in their cell phone.
|
67
|
+
# if they used your keyword, it will also be in +content+
|
68
|
+
#
|
69
|
+
# Example:
|
70
|
+
# TatangoSMS::MO.receive(server, '/') do |phone_number, content|
|
71
|
+
# puts "message from #{phone_number} was #{content}"
|
72
|
+
# end
|
73
|
+
def receive(server, path = '/', &blk)
|
74
|
+
server.register(path, Handler.new(&blk))
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
class Handler < Mongrel::HttpHandler # :nodoc:
|
79
|
+
def initialize(&blk)
|
80
|
+
@processor = blk
|
81
|
+
end
|
82
|
+
|
83
|
+
def process(request, response)
|
84
|
+
|
85
|
+
params = Hash.from_xml(request.body.read)
|
86
|
+
phone_number = params['message']['sender']
|
87
|
+
content = params['message']['content']
|
88
|
+
|
89
|
+
# puts "Processing request from: #{request.params['REMOTE_ADDR']} phone: #{phone_number}"
|
90
|
+
|
91
|
+
@processor.call(phone_number, content)
|
92
|
+
|
93
|
+
response.start(202) do |head,out|
|
94
|
+
head["Content-Type"] = 'text/plain'
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# This file is part of TatangoSMS.
|
2
|
+
#
|
3
|
+
# TatangoSMS is a simple library to facilitate the use of the Tatango
|
4
|
+
# Messaging Gateway. The Tatango Messaging Gateway provides a way for you to utilize our
|
5
|
+
# streamlined messaging pipeline to send out SMS messages to your users.
|
6
|
+
# SMS messages are advertisement-supported, so we can provide this
|
7
|
+
# service at zero cost to the developer.
|
8
|
+
#
|
9
|
+
# More information can be found at http://tatango.com/developers/gateway
|
10
|
+
#
|
11
|
+
# Copyright (c) 2008, Tatango Inc.
|
12
|
+
# All rights reserved.
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# TatangoSMS is free software: you can redistribute it and/or modify
|
16
|
+
# it under the terms of the GNU Lesser Public License as published by
|
17
|
+
# the Free Software Foundation, either version 3 of the License, or
|
18
|
+
# (at your option) any later version.
|
19
|
+
#
|
20
|
+
# TatangoSMS is distributed in the hope that it will be useful,
|
21
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
22
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
23
|
+
# GNU Lesser Public License for more details.
|
24
|
+
#
|
25
|
+
# You should have received a copy of the GNU Lesser Public License
|
26
|
+
# along with TatangoSMS. If not, see <http://www.gnu.org/licenses/>.
|
27
|
+
|
28
|
+
|
29
|
+
require 'digest/md5'
|
30
|
+
require 'net/http'
|
31
|
+
require 'uri'
|
32
|
+
|
33
|
+
module TatangoSMS
|
34
|
+
|
35
|
+
# TatangoSMS::MT makes it easy to send a message through the Tatango SMS Gateway
|
36
|
+
#
|
37
|
+
# Examples:
|
38
|
+
# require 'tatango_sms/mt'
|
39
|
+
# TatangoSMS::MT.send('tatangosmsgatewayKEY', 'password', '9998887777', 'A message')
|
40
|
+
# # or
|
41
|
+
# mt = TatangoSMS::MT.new 'tatangosmsgatewayKEY', 'password'
|
42
|
+
# response = mt.send '9998887777', 'Another silly message'
|
43
|
+
class MT
|
44
|
+
|
45
|
+
@@gateway_url = 'http://gateway.tatango.com/messages'
|
46
|
+
|
47
|
+
class << self
|
48
|
+
# see MT#send
|
49
|
+
def send(key, password, phone_number, message)
|
50
|
+
new(key, password).send(phone_number, message)
|
51
|
+
end
|
52
|
+
|
53
|
+
def url=(url) # :nodoc:
|
54
|
+
@@gateway_url = url
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# create an MT instance to avoid repetition of key and password
|
59
|
+
def initialize(key, password)
|
60
|
+
@gateway_key, @gateway_password = key, password
|
61
|
+
end
|
62
|
+
|
63
|
+
# send a +message+ to +phone_number+
|
64
|
+
#
|
65
|
+
# returns a Net::HTTP response
|
66
|
+
def send(phone_number, message)
|
67
|
+
Net::HTTP.post_form(
|
68
|
+
URI.parse(@@gateway_url), {
|
69
|
+
'key' => @gateway_key,
|
70
|
+
'recipient' => phone_number,
|
71
|
+
'message' => message,
|
72
|
+
'hash' => Digest::MD5.hexdigest(@gateway_password + message)
|
73
|
+
}
|
74
|
+
)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Sorry, no tests written yet
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tatango-sms
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "0.1"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Amiel Martin
|
8
|
+
- Adrian Pike
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-10-20 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: hoe
|
18
|
+
type: :development
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.8.0
|
25
|
+
version:
|
26
|
+
description: The Tatango Messaging Gateway provides a way for you to utilize our streamlined messaging pipeline to send out SMS messages to your users. SMS messages are advertisement-supported, so we can provide this service at zero cost to the developer.
|
27
|
+
email:
|
28
|
+
- amiel@tatango.com
|
29
|
+
- apike@tatango.com
|
30
|
+
executables: []
|
31
|
+
|
32
|
+
extensions: []
|
33
|
+
|
34
|
+
extra_rdoc_files:
|
35
|
+
- History.txt
|
36
|
+
- README.txt
|
37
|
+
- Manifest.txt
|
38
|
+
files:
|
39
|
+
- History.txt
|
40
|
+
- README.txt
|
41
|
+
- Manifest.txt
|
42
|
+
- lib/tatango_sms.rb
|
43
|
+
- lib/tatango_sms/mo.rb
|
44
|
+
- lib/tatango_sms/mt.rb
|
45
|
+
- test/test_tatango_sms.rb
|
46
|
+
has_rdoc: true
|
47
|
+
homepage: http://tatango.com/developers/gateway
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options:
|
50
|
+
- --main
|
51
|
+
- README.txt
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: "0"
|
59
|
+
version:
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: "0"
|
65
|
+
version:
|
66
|
+
requirements: []
|
67
|
+
|
68
|
+
rubyforge_project: tatango-sms
|
69
|
+
rubygems_version: 1.2.0
|
70
|
+
signing_key:
|
71
|
+
specification_version: 2
|
72
|
+
summary: The Tatango Messaging Gateway provides a way for you to utilize our streamlined messaging pipeline to send out SMS messages to your users
|
73
|
+
test_files:
|
74
|
+
- test/test_tatango_sms.rb
|