josh-splat 0.0.3 → 0.0.4
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/VERSION +1 -1
- data/generators/splat_config/templates/vendors.yml +8 -1
- data/lib/splat/vendors/bulksmspune/bulksmspune_gateway.rb +1 -1
- data/lib/splat/vendors/twilio/twilio_gateway.rb +75 -0
- data/lib/splat/vendors/twilio/xml/twilio.xsd +35 -0
- data/lib/splat/vendors/twilio/xml/twilio_xml.rb +175 -0
- data/test.rb +10 -8
- metadata +5 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
@@ -0,0 +1,75 @@
|
|
1
|
+
|
2
|
+
require 'net/https'
|
3
|
+
require File.dirname(__FILE__) + '/xml/twilio_xml'
|
4
|
+
|
5
|
+
module Splat
|
6
|
+
|
7
|
+
class Twilio < Gateway
|
8
|
+
|
9
|
+
def initialize()
|
10
|
+
super
|
11
|
+
self.required_config([:provider_url, :account_sid, :auth_token])
|
12
|
+
@service_url = self.config_option(:provider_url)
|
13
|
+
@account_sid = self.config_option(:account_sid)
|
14
|
+
@auth_token = self.config_option(:auth_token)
|
15
|
+
@api_version = self.config_option(:api_version) || '2008-08-01'
|
16
|
+
@phone_number = self.config_option(:phone_number)
|
17
|
+
|
18
|
+
@send_service_url = URI.parse("#{@service_url}/#{@api_version}/Accounts/#{@account_sid}/SMS/Messages")
|
19
|
+
|
20
|
+
#if options[:callbacks]
|
21
|
+
# before_send = options[:callback][:before_send]
|
22
|
+
#end
|
23
|
+
end
|
24
|
+
|
25
|
+
def send_sms(message, number, options = {})
|
26
|
+
options[:response].add(number, call_service(message, number))
|
27
|
+
options[:response]
|
28
|
+
end
|
29
|
+
|
30
|
+
def send_bulk_sms(message, numbers, options = {})
|
31
|
+
numbers.each do |number|
|
32
|
+
options[:response].add(number, call_service(message, number))
|
33
|
+
end
|
34
|
+
options[:response]
|
35
|
+
end
|
36
|
+
|
37
|
+
def send_bulk_sms_with_insertion(message, insertions = {}, options = {})
|
38
|
+
|
39
|
+
number_message_map = insert_values(message, insertions)
|
40
|
+
number_message_map.each do |number, message|
|
41
|
+
options[:response].add(number, call_service(message, parse_number(number)))
|
42
|
+
end
|
43
|
+
options[:response]
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def call_service(message, number)
|
49
|
+
|
50
|
+
http = Net::HTTP.new(@send_service_url.host, @send_service_url.port)
|
51
|
+
http.use_ssl = true
|
52
|
+
|
53
|
+
request = Net::HTTP::Post.new(@send_service_url.request_uri)
|
54
|
+
request.basic_auth(@account_sid, @auth_token)
|
55
|
+
request.set_form_data({'To' => parse_number(number),
|
56
|
+
'From' => @phone_number,
|
57
|
+
'Body' => message })
|
58
|
+
|
59
|
+
response = XSD::Mapping.xml2obj(http.request(request).body)
|
60
|
+
|
61
|
+
if response.RestException
|
62
|
+
return response.RestException.message
|
63
|
+
end
|
64
|
+
|
65
|
+
response.SMSMessage.status
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def parse_number(number)
|
70
|
+
number.tr(' ', '')
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
3
|
+
|
4
|
+
<xs:complexType name="RestException">
|
5
|
+
<xs:sequence>
|
6
|
+
<xs:element name="Status" type="xs:string"/>
|
7
|
+
<xs:element name="Message" type="xs:string"/>
|
8
|
+
<xs:element name="Code" type="xs:string"/>
|
9
|
+
<xs:element name="MoreInfo" type="xs:string"/>
|
10
|
+
</xs:sequence>
|
11
|
+
</xs:complexType>
|
12
|
+
|
13
|
+
<xs:complexType name="SMSMessage">
|
14
|
+
<xs:sequence>
|
15
|
+
<xs:element name="Sid" type="xs:string"/>
|
16
|
+
<xs:element name="DateCreated" type="xs:string"/>
|
17
|
+
<xs:element name="DateUpdated" type="xs:string"/>
|
18
|
+
<xs:element name="DateSent" type="xs:string"/>
|
19
|
+
<xs:element name="AccountSid" type="xs:string"/>
|
20
|
+
<xs:element name="To" type="xs:string"/>
|
21
|
+
<xs:element name="From" type="xs:string"/>
|
22
|
+
<xs:element name="Body" type="xs:string"/>
|
23
|
+
<xs:element name="Status" type="xs:string"/>
|
24
|
+
<xs:element name="Flags" type="xs:string"/>
|
25
|
+
</xs:sequence>
|
26
|
+
</xs:complexType>
|
27
|
+
|
28
|
+
<xs:complexType name="TwilioResponse">
|
29
|
+
<xs:sequence>
|
30
|
+
<xs:element name="RestException" type="RestException" />
|
31
|
+
<xs:element name="SMSMessage" type="SMSMessage" />
|
32
|
+
</xs:sequence>
|
33
|
+
</xs:complexType>
|
34
|
+
|
35
|
+
</xs:schema>
|
@@ -0,0 +1,175 @@
|
|
1
|
+
require 'xsd/qname'
|
2
|
+
|
3
|
+
# {}RestException
|
4
|
+
class RestException
|
5
|
+
@@schema_type = "RestException"
|
6
|
+
@@schema_ns = nil
|
7
|
+
@@schema_element = [["status", ["SOAP::SOAPString", XSD::QName.new(nil, "Status")]], ["message", ["SOAP::SOAPString", XSD::QName.new(nil, "Message")]], ["code", ["SOAP::SOAPString", XSD::QName.new(nil, "Code")]], ["moreInfo", ["SOAP::SOAPString", XSD::QName.new(nil, "MoreInfo")]]]
|
8
|
+
|
9
|
+
def Status
|
10
|
+
@status
|
11
|
+
end
|
12
|
+
|
13
|
+
def Status=(value)
|
14
|
+
@status = value
|
15
|
+
end
|
16
|
+
|
17
|
+
def Message
|
18
|
+
@message
|
19
|
+
end
|
20
|
+
|
21
|
+
def Message=(value)
|
22
|
+
@message = value
|
23
|
+
end
|
24
|
+
|
25
|
+
def Code
|
26
|
+
@code
|
27
|
+
end
|
28
|
+
|
29
|
+
def Code=(value)
|
30
|
+
@code = value
|
31
|
+
end
|
32
|
+
|
33
|
+
def MoreInfo
|
34
|
+
@moreInfo
|
35
|
+
end
|
36
|
+
|
37
|
+
def MoreInfo=(value)
|
38
|
+
@moreInfo = value
|
39
|
+
end
|
40
|
+
|
41
|
+
def initialize(status = nil, message = nil, code = nil, moreInfo = nil)
|
42
|
+
@status = status
|
43
|
+
@message = message
|
44
|
+
@code = code
|
45
|
+
@moreInfo = moreInfo
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# {}SMSMessage
|
50
|
+
class SMSMessage
|
51
|
+
@@schema_type = "SMSMessage"
|
52
|
+
@@schema_ns = nil
|
53
|
+
@@schema_element = [["sid", ["SOAP::SOAPString", XSD::QName.new(nil, "Sid")]], ["dateCreated", ["SOAP::SOAPString", XSD::QName.new(nil, "DateCreated")]], ["dateUpdated", ["SOAP::SOAPString", XSD::QName.new(nil, "DateUpdated")]], ["dateSent", ["SOAP::SOAPString", XSD::QName.new(nil, "DateSent")]], ["accountSid", ["SOAP::SOAPString", XSD::QName.new(nil, "AccountSid")]], ["to", ["SOAP::SOAPString", XSD::QName.new(nil, "To")]], ["from", ["SOAP::SOAPString", XSD::QName.new(nil, "From")]], ["body", ["SOAP::SOAPString", XSD::QName.new(nil, "Body")]], ["status", ["SOAP::SOAPString", XSD::QName.new(nil, "Status")]], ["flags", ["SOAP::SOAPString", XSD::QName.new(nil, "Flags")]]]
|
54
|
+
|
55
|
+
def Sid
|
56
|
+
@sid
|
57
|
+
end
|
58
|
+
|
59
|
+
def Sid=(value)
|
60
|
+
@sid = value
|
61
|
+
end
|
62
|
+
|
63
|
+
def DateCreated
|
64
|
+
@dateCreated
|
65
|
+
end
|
66
|
+
|
67
|
+
def DateCreated=(value)
|
68
|
+
@dateCreated = value
|
69
|
+
end
|
70
|
+
|
71
|
+
def DateUpdated
|
72
|
+
@dateUpdated
|
73
|
+
end
|
74
|
+
|
75
|
+
def DateUpdated=(value)
|
76
|
+
@dateUpdated = value
|
77
|
+
end
|
78
|
+
|
79
|
+
def DateSent
|
80
|
+
@dateSent
|
81
|
+
end
|
82
|
+
|
83
|
+
def DateSent=(value)
|
84
|
+
@dateSent = value
|
85
|
+
end
|
86
|
+
|
87
|
+
def AccountSid
|
88
|
+
@accountSid
|
89
|
+
end
|
90
|
+
|
91
|
+
def AccountSid=(value)
|
92
|
+
@accountSid = value
|
93
|
+
end
|
94
|
+
|
95
|
+
def To
|
96
|
+
@to
|
97
|
+
end
|
98
|
+
|
99
|
+
def To=(value)
|
100
|
+
@to = value
|
101
|
+
end
|
102
|
+
|
103
|
+
def From
|
104
|
+
@from
|
105
|
+
end
|
106
|
+
|
107
|
+
def From=(value)
|
108
|
+
@from = value
|
109
|
+
end
|
110
|
+
|
111
|
+
def Body
|
112
|
+
@body
|
113
|
+
end
|
114
|
+
|
115
|
+
def Body=(value)
|
116
|
+
@body = value
|
117
|
+
end
|
118
|
+
|
119
|
+
def Status
|
120
|
+
@status
|
121
|
+
end
|
122
|
+
|
123
|
+
def Status=(value)
|
124
|
+
@status = value
|
125
|
+
end
|
126
|
+
|
127
|
+
def Flags
|
128
|
+
@flags
|
129
|
+
end
|
130
|
+
|
131
|
+
def Flags=(value)
|
132
|
+
@flags = value
|
133
|
+
end
|
134
|
+
|
135
|
+
def initialize(sid = nil, dateCreated = nil, dateUpdated = nil, dateSent = nil, accountSid = nil, to = nil, from = nil, body = nil, status = nil, flags = nil)
|
136
|
+
@sid = sid
|
137
|
+
@dateCreated = dateCreated
|
138
|
+
@dateUpdated = dateUpdated
|
139
|
+
@dateSent = dateSent
|
140
|
+
@accountSid = accountSid
|
141
|
+
@to = to
|
142
|
+
@from = from
|
143
|
+
@body = body
|
144
|
+
@status = status
|
145
|
+
@flags = flags
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# {}TwilioResponse
|
150
|
+
class TwilioResponse
|
151
|
+
@@schema_type = "TwilioResponse"
|
152
|
+
@@schema_ns = nil
|
153
|
+
@@schema_element = [["restException", ["RestException", XSD::QName.new(nil, "RestException")]], ["sMSMessage", ["SMSMessage", XSD::QName.new(nil, "SMSMessage")]]]
|
154
|
+
|
155
|
+
def RestException
|
156
|
+
@restException
|
157
|
+
end
|
158
|
+
|
159
|
+
def RestException=(value)
|
160
|
+
@restException = value
|
161
|
+
end
|
162
|
+
|
163
|
+
def SMSMessage
|
164
|
+
@sMSMessage
|
165
|
+
end
|
166
|
+
|
167
|
+
def SMSMessage=(value)
|
168
|
+
@sMSMessage = value
|
169
|
+
end
|
170
|
+
|
171
|
+
def initialize(restException = nil, sMSMessage = nil)
|
172
|
+
@restException = restException
|
173
|
+
@sMSMessage = sMSMessage
|
174
|
+
end
|
175
|
+
end
|
data/test.rb
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
require 'lib/splat'
|
4
4
|
|
5
|
-
number = '+91 9850888082'
|
6
5
|
|
7
6
|
gateways = {}
|
8
7
|
#gateways['bulksms'] = Splat::Base.new(:bulksmspune)
|
9
8
|
#gateways['vmobo'] = Splat::Base.new(:vmobo)
|
10
|
-
gateways['clickatell'] = Splat::Base.new(:clickatell)
|
9
|
+
#gateways['clickatell'] = Splat::Base.new(:clickatell)
|
10
|
+
gateways['twilio'] = Splat::Base.new(:twilio)
|
11
11
|
|
12
12
|
|
13
|
-
=begin
|
14
13
|
#number = '+1 5599726538'
|
15
|
-
number = '+91
|
14
|
+
number = '+91 9960054954'
|
15
|
+
#number = '+1 4158685943'
|
16
16
|
msg = "Testing for splat"
|
17
17
|
gateways.each do |provider, obj|
|
18
18
|
p "Sending SMS via #{provider}"
|
@@ -21,6 +21,7 @@ gateways.each do |provider, obj|
|
|
21
21
|
end
|
22
22
|
p "========================"
|
23
23
|
|
24
|
+
=begin
|
24
25
|
msg = "Testing for splat"
|
25
26
|
numbers = ['+91 9960054954', '+91 9850888082']
|
26
27
|
gateways.each do |provider, obj|
|
@@ -29,10 +30,10 @@ gateways.each do |provider, obj|
|
|
29
30
|
end
|
30
31
|
p "========================"
|
31
32
|
|
32
|
-
|
33
|
-
custom_msg = "Hi $1, hold on to your $2."
|
34
|
-
options = {'+91 9960054954' => ['Sagar', 'coffee']
|
35
|
-
'+91 9850888082' => ['Gautam' , 'stocks']}
|
33
|
+
|
34
|
+
custom_msg = "Hi, $1, hold on to your $2."
|
35
|
+
options = {'+91 9960054954' => ['Sagar', 'coffee']}
|
36
|
+
#'+91 9850888082' => ['Gautam' , 'stocks']}
|
36
37
|
#'+91 9880397111' => ['Jane' , 'skirt']}
|
37
38
|
|
38
39
|
gateways.each do |provider, obj|
|
@@ -40,5 +41,6 @@ gateways.each do |provider, obj|
|
|
40
41
|
p "Bulk Send successfully via #{provider}"
|
41
42
|
end
|
42
43
|
|
44
|
+
=end
|
43
45
|
|
44
46
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Gautam Rege
|
@@ -68,6 +68,9 @@ files:
|
|
68
68
|
- lib/splat/vendors/vmobo/xml/schema/vmobo.xsd
|
69
69
|
- lib/splat/vendors/vmobo/xml/schema.rb
|
70
70
|
- lib/splat.rb
|
71
|
+
- lib/splat/vendors/twilio/twilio_gateway.rb
|
72
|
+
- lib/splat/vendors/twilio/xml/twilio.xsd
|
73
|
+
- lib/splat/vendors/twilio/xml/twilio_xml.rb
|
71
74
|
- test.rb
|
72
75
|
has_rdoc: true
|
73
76
|
homepage: http://github.com/joshsoftware/Splat
|