josh-splat 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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