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 CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.4
@@ -16,4 +16,11 @@ clickatell:
16
16
  api_key:
17
17
  username:
18
18
  password:
19
-
19
+
20
+ twilio:
21
+ provider_url: 'https://api.twilio.com'
22
+ account_sid:
23
+ auth_token:
24
+ api_version: '2008-08-01'
25
+ phone_number: # From mobile number provided by TWILIO.
26
+
@@ -16,7 +16,7 @@ module Splat
16
16
  end
17
17
 
18
18
  def send_sms(message, number, options = {})
19
- options[:response].message = call_service(message, parse_number(number))
19
+ options[:response].add(number, call_service(message, parse_number(number)))
20
20
  options[:response]
21
21
  end
22
22
 
@@ -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 9881395656'
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
- =end
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
- - 3
9
- version: 0.0.3
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