twilio-ruby 3.4.0 → 3.4.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/README.md +14 -7
- data/lib/twilio-ruby/rest/client.rb +7 -1
- data/lib/twilio-ruby/rest/instance_resource.rb +3 -6
- data/lib/twilio-ruby/rest/list_resource.rb +3 -4
- data/lib/twilio-ruby/version.rb +1 -1
- data/test/twilio_spec.rb +58 -26
- data/twilio-ruby.gemspec +1 -1
- metadata +4 -6
- data/README.rdoc +0 -0
data/README.md
CHANGED
@@ -42,13 +42,13 @@ capability.allow_client_incoming 'andrew'
|
|
42
42
|
@token = capability.generate
|
43
43
|
```
|
44
44
|
|
45
|
-
There is a slightly more detailed document in the
|
46
|
-
|
45
|
+
There is a slightly more detailed document in the [Capability][capability]
|
46
|
+
section of the wiki.
|
47
47
|
|
48
48
|
## Getting Started With TwiML
|
49
49
|
|
50
|
-
TwiML support is based on the [builder][
|
51
|
-
response like this:
|
50
|
+
TwiML support is based on the [builder][builder] library. You can construct a
|
51
|
+
TwiML response like this:
|
52
52
|
|
53
53
|
``` ruby
|
54
54
|
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
|
@@ -144,8 +144,15 @@ auth_token = '62ea81de3a5b414154eb263595357c69'
|
|
144
144
|
|
145
145
|
## More Information
|
146
146
|
|
147
|
-
There are more detailed examples in the included [examples.rb]
|
147
|
+
There are more detailed examples in the included [examples.rb][examples].
|
148
148
|
|
149
|
-
Full [API documentation]
|
149
|
+
Full [API documentation][documentation], as well as an [upgrade guide][upgrade]
|
150
|
+
for users of the old twiliolib gem, is available in the
|
151
|
+
[twilio-ruby github wiki][wiki].
|
150
152
|
|
151
|
-
[
|
153
|
+
[capability]:https://github.com/twilio/twilio-ruby/wiki/Capability
|
154
|
+
[builder]:http://builder.rubyforge.org/
|
155
|
+
[examples]:https://github.com/twilio/twilio-ruby/blob/master/examples.rb
|
156
|
+
[documentation]:https://github.com/twilio/twilio-ruby/wiki/Documentation
|
157
|
+
[upgrade]:https://github.com/twilio/twilio-ruby/wiki/UpgradeGuide
|
158
|
+
[wiki]:https://github.com/twilio/twilio-ruby/wiki
|
@@ -82,6 +82,11 @@ module Twilio
|
|
82
82
|
# to avoid insecure connection warnings in environments without the proper
|
83
83
|
# cert validation chain.
|
84
84
|
#
|
85
|
+
# === <tt>:ssl_ca_file => '/path/to/ca/file'</tt>
|
86
|
+
#
|
87
|
+
# Specify the path to the certificate authority bundle you'd like to use
|
88
|
+
# when verifying Twilio's SSL certificate.
|
89
|
+
#
|
85
90
|
# === <tt>:timeout => 30</tt>
|
86
91
|
#
|
87
92
|
# Set the time in seconds to wait before timing out the HTTP request.
|
@@ -125,7 +130,7 @@ module Twilio
|
|
125
130
|
method_class = Net::HTTP.const_get method.to_s.capitalize
|
126
131
|
define_method method do |uri, *args|
|
127
132
|
params = twilify args[0]; params = {} if params.empty?
|
128
|
-
uri
|
133
|
+
uri = "#{uri}.json" # create a local copy of the uri to manipulate
|
129
134
|
uri << "?#{url_encode(params)}" if method == :get && !params.empty?
|
130
135
|
request = method_class.new uri, HTTP_HEADERS
|
131
136
|
request.basic_auth @account_sid, @auth_token
|
@@ -181,6 +186,7 @@ module Twilio
|
|
181
186
|
config[:proxy_port], config[:proxy_user], config[:proxy_pass]
|
182
187
|
@connection = connection_class.new config[:host], config[:port]
|
183
188
|
@connection.use_ssl = config[:use_ssl]
|
189
|
+
@connection.ca_file = config[:ssl_ca_file]
|
184
190
|
unless config[:ssl_verify_peer]
|
185
191
|
@connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
186
192
|
end
|
@@ -38,8 +38,7 @@ module Twilio
|
|
38
38
|
# instance resource, including the newly updated properties.
|
39
39
|
def update(params = {})
|
40
40
|
raise "Can't update a resource without a REST Client" unless @client
|
41
|
-
|
42
|
-
set_up_properties_from response
|
41
|
+
set_up_properties_from(@client.post(@uri, params))
|
43
42
|
self
|
44
43
|
end
|
45
44
|
|
@@ -49,8 +48,7 @@ module Twilio
|
|
49
48
|
def refresh
|
50
49
|
raise "Can't refresh a resource without a REST Client" unless @client
|
51
50
|
@updated = false
|
52
|
-
|
53
|
-
set_up_properties_from response
|
51
|
+
set_up_properties_from(@client.get(@uri))
|
54
52
|
self
|
55
53
|
end
|
56
54
|
|
@@ -68,8 +66,7 @@ module Twilio
|
|
68
66
|
# until an attempt is made to access an unknown attribute.
|
69
67
|
def method_missing(method, *args)
|
70
68
|
super if @updated
|
71
|
-
|
72
|
-
set_up_properties_from response
|
69
|
+
set_up_properties_from(@client.get(@uri))
|
73
70
|
self.send method, *args
|
74
71
|
end
|
75
72
|
|
@@ -33,10 +33,10 @@ module Twilio
|
|
33
33
|
resource
|
34
34
|
end
|
35
35
|
# set the +total+ property on the array
|
36
|
-
resource_list.instance_eval
|
36
|
+
resource_list.instance_eval do
|
37
37
|
eigenclass = class << self; self; end
|
38
38
|
eigenclass.send :define_method, :total, &lambda {response['total']}
|
39
|
-
|
39
|
+
end
|
40
40
|
resource_list
|
41
41
|
end
|
42
42
|
|
@@ -49,8 +49,7 @@ module Twilio
|
|
49
49
|
# +total+ attribute as well.
|
50
50
|
def total
|
51
51
|
raise "Can't get a resource total without a REST Client" unless @client
|
52
|
-
|
53
|
-
@total = response['total']
|
52
|
+
@client.get(@uri, :page_size => 1)['total']
|
54
53
|
end
|
55
54
|
|
56
55
|
##
|
data/lib/twilio-ruby/version.rb
CHANGED
data/test/twilio_spec.rb
CHANGED
@@ -21,6 +21,12 @@ describe Twilio::REST::Client do
|
|
21
21
|
twilio.instance_variable_get('@connection').use_ssl?.should == true
|
22
22
|
end
|
23
23
|
|
24
|
+
it 'should set up the requested ssl verification ca_file if provided' do
|
25
|
+
twilio = Twilio::REST::Client.new('someSid', 'someToken', :ssl_ca_file => '/path/to/ca/file')
|
26
|
+
connection = twilio.instance_variable_get('@connection')
|
27
|
+
connection.ca_file.should == '/path/to/ca/file'
|
28
|
+
end
|
29
|
+
|
24
30
|
it 'should set up the proper http ssl connection when a different domain is given' do
|
25
31
|
twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com')
|
26
32
|
twilio.instance_variable_get('@connection').address.should == 'api.faketwilio.com'
|
@@ -182,39 +188,65 @@ describe Twilio::REST::Recording do
|
|
182
188
|
end
|
183
189
|
|
184
190
|
describe Twilio::Util::RequestValidator do
|
185
|
-
it 'should properly validate a Twilio request
|
186
|
-
token = '
|
191
|
+
it 'should properly validate a Twilio Voice request' do
|
192
|
+
token = '2bd9e9638872de601313dc77410d3b23'
|
187
193
|
validator = Twilio::Util::RequestValidator.new token
|
188
|
-
url = 'http://
|
194
|
+
url = 'http://twiliotests.heroku.com/validate/voice'
|
189
195
|
params = {
|
190
|
-
'
|
191
|
-
'
|
192
|
-
'CallSid' => 'CAd800bb12c0426a7ea4230e492fef2a4f',
|
193
|
-
'CallStatus' => 'ringing',
|
194
|
-
'Called' => '+15306384866',
|
195
|
-
'CalledCity' => 'OAKLAND',
|
196
|
-
'CalledCountry' => 'US',
|
197
|
-
'CalledState' => 'CA',
|
198
|
-
'CalledZip' => '94612',
|
199
|
-
'Caller' => '+15306666666',
|
200
|
-
'CallerCity' => 'SOUTH LAKE TAHOE',
|
201
|
-
'CallerCountry' => 'US',
|
202
|
-
'CallerName' => 'CA Wireless Call',
|
203
|
-
'CallerState' => 'CA',
|
204
|
-
'CallerZip' => '89449',
|
196
|
+
'ToState' => 'California',
|
197
|
+
'CalledState' => 'California',
|
205
198
|
'Direction' => 'inbound',
|
206
|
-
'From' => '+15306666666',
|
207
|
-
'FromCity' => 'SOUTH LAKE TAHOE',
|
208
|
-
'FromCountry' => 'US',
|
209
199
|
'FromState' => 'CA',
|
210
|
-
'
|
211
|
-
'
|
212
|
-
'
|
200
|
+
'AccountSid' => 'ACba8bc05eacf94afdae398e642c9cc32d',
|
201
|
+
'Caller' => '+14153595711',
|
202
|
+
'CallerZip' => '94108',
|
203
|
+
'CallerCountry' => 'US',
|
204
|
+
'From' => '+14153595711',
|
205
|
+
'FromCity' => 'SAN FRANCISCO',
|
206
|
+
'CallerCity' => 'SAN FRANCISCO',
|
207
|
+
'To' => '+14157669926',
|
208
|
+
'FromZip' => '94108',
|
209
|
+
'FromCountry' => 'US',
|
210
|
+
'ToCity' => '',
|
211
|
+
'CallStatus' => 'ringing',
|
212
|
+
'CalledCity' => '',
|
213
|
+
'CallerState' => 'CA',
|
214
|
+
'CalledZip' => '',
|
215
|
+
'ToZip' => '',
|
213
216
|
'ToCountry' => 'US',
|
217
|
+
'CallSid' => 'CA136d09cd59a3c0ec8dbff44da5c03f31',
|
218
|
+
'CalledCountry' => 'US',
|
219
|
+
'Called' => '+14157669926',
|
220
|
+
'ApiVersion' => '2010-04-01',
|
221
|
+
'ApplicationSid' => 'AP44efecad51364e80b133bb7c07eb8204'
|
222
|
+
}
|
223
|
+
signature = 'oVb2kXoVy8GEfwBDjR8bk/ZZ6eA='
|
224
|
+
validator.validate(url, params, signature).should == true
|
225
|
+
end
|
226
|
+
|
227
|
+
it 'should properly validate a Twilio SMS request' do
|
228
|
+
token = '2bd9e9638872de601313dc77410d3b23'
|
229
|
+
validator = Twilio::Util::RequestValidator.new token
|
230
|
+
url = 'http://twiliotests.heroku.com/validate/sms'
|
231
|
+
params = {
|
214
232
|
'ToState' => 'CA',
|
215
|
-
'
|
233
|
+
'FromState' => 'CA',
|
234
|
+
'AccountSid' => 'ACba8bc05eacf94afdae398e642c9cc32d',
|
235
|
+
'SmsMessageSid' => 'SM2003cbd5e6a3701999aa3e5f20ff2787',
|
236
|
+
'Body' => 'Orly',
|
237
|
+
'From' => '+14159354345',
|
238
|
+
'FromCity' => 'SAN FRANCISCO',
|
239
|
+
'SmsStatus' => 'received',
|
240
|
+
'FromZip' => '94107',
|
241
|
+
'FromCountry' => 'US',
|
242
|
+
'To' => '+14158141819',
|
243
|
+
'ToCity' => 'SAN FRANCISCO',
|
244
|
+
'ToZip' => '94105',
|
245
|
+
'ToCountry' => 'US',
|
246
|
+
'ApiVersion' => '2010-04-01',
|
247
|
+
'SmsSid' => 'SM2003cbd5e6a3701999aa3e5f20ff2787'
|
216
248
|
}
|
217
|
-
signature = '
|
249
|
+
signature = 'mxeiv65lEe0b8L6LdVw2jgJi8yw='
|
218
250
|
validator.validate(url, params, signature).should == true
|
219
251
|
end
|
220
252
|
end
|
data/twilio-ruby.gemspec
CHANGED
@@ -24,6 +24,6 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency 'fakeweb', '~> 1.3.0'
|
25
25
|
s.add_development_dependency 'rack', '~> 1.3.0'
|
26
26
|
|
27
|
-
s.extra_rdoc_files = ['README.md', '
|
27
|
+
s.extra_rdoc_files = ['README.md', 'examples.rb', 'LICENSE']
|
28
28
|
s.rdoc_options = ['--line-numbers', '--inline-source', '--title', 'twilio-ruby', '--main', 'README.md']
|
29
29
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twilio-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 3.4.
|
9
|
+
- 1
|
10
|
+
version: 3.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrew Benton
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-09
|
18
|
+
date: 2011-10-09 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -138,7 +138,6 @@ extensions: []
|
|
138
138
|
|
139
139
|
extra_rdoc_files:
|
140
140
|
- README.md
|
141
|
-
- README.rdoc
|
142
141
|
- examples.rb
|
143
142
|
- LICENSE
|
144
143
|
files:
|
@@ -146,7 +145,6 @@ files:
|
|
146
145
|
- Gemfile
|
147
146
|
- LICENSE
|
148
147
|
- README.md
|
149
|
-
- README.rdoc
|
150
148
|
- Rakefile
|
151
149
|
- examples.rb
|
152
150
|
- lib/twilio-ruby.rb
|
data/README.rdoc
DELETED
File without changes
|