twilio-ruby 3.11.5 → 3.11.6
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.
- checksums.yaml +13 -5
- data/AUTHORS.md +29 -25
- data/{CHANGES → CHANGES.md} +8 -0
- data/Gemfile +8 -1
- data/{LICENSE → LICENSE.md} +1 -1
- data/Makefile +1 -2
- data/README.md +41 -19
- data/Rakefile +8 -10
- data/docs/usage/twiml.rst +1 -1
- data/lib/twilio-ruby/rest/client.rb +5 -1
- data/lib/twilio-ruby/twiml/response.rb +1 -0
- data/lib/twilio-ruby/version.rb +1 -1
- data/spec/rest/account_spec.rb +20 -20
- data/spec/rest/call_spec.rb +4 -4
- data/spec/rest/client_spec.rb +40 -36
- data/spec/rest/conference_spec.rb +2 -2
- data/spec/rest/instance_resource_spec.rb +3 -3
- data/spec/rest/message_spec.rb +2 -2
- data/spec/rest/numbers_spec.rb +12 -12
- data/spec/rest/queue_spec.rb +2 -2
- data/spec/rest/recording_spec.rb +2 -2
- data/spec/spec_helper.rb +12 -3
- data/spec/support/fakeweb.rb +2 -0
- data/spec/util/capability_spec.rb +38 -38
- data/spec/util/request_validator_spec.rb +2 -2
- data/spec/util/url_encode_spec.rb +1 -1
- data/twilio-ruby.gemspec +29 -27
- metadata +43 -40
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OGUxMzc0ZmMwMjk0ZDY5MTU4ZDY0NGY3MGM3MmI1NmZlODBmODM5Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGFhNTM3Nzg4YzVlOGYxYmExMTQyNjQyMjQ3M2Q1YmM1NTY1Nzk5NA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MTVlZDc3MzFlOGRjYTk4N2FkYzg5MGRmZDZjZTg0MzUwYmRhODNhNmFjMDli
|
10
|
+
N2ZhNGQ1MWQ3N2FiN2QyNDcyODFmNWY5MTE0Njk1NzZkYjZmZjBmNzQ2NTg0
|
11
|
+
YjVlMTI0M2I4ZDg0Y2Q1OWE3MmM3OTFlMTcwMDJjZmNlNTEzZGE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YjE1ODY5NTEzNTI2ZTYwZGJlNGY2NGMyYTVkZDY2MDEwOGQ0OTk3ZDYwMjI2
|
14
|
+
YzI5Y2JiNmQ2ZWYzNjQwODI5ODA3YzVjYjUxMTgyZjgyOWExMmU2MGRiZGI0
|
15
|
+
N2EzMTFjMzA5MDRiNmViN2MzZWE1MThiY2MzZDNmZGNlNDZlODE=
|
data/AUTHORS.md
CHANGED
@@ -4,28 +4,32 @@ Authors
|
|
4
4
|
A huge thanks to all of our contributors:
|
5
5
|
|
6
6
|
|
7
|
-
- Adam Ballai
|
8
|
-
- Alexander Murmann & Ryan Spore
|
9
|
-
- Andrew Benton
|
10
|
-
- Brian Levine
|
11
|
-
- Caley Woods
|
12
|
-
- Carlos Diaz-Padron
|
13
|
-
- Connor Montgomery
|
14
|
-
- Doug Black
|
15
|
-
- Elaine Tsai
|
16
|
-
- Fiona Tay & Will Read
|
17
|
-
- Geoff Petrie
|
18
|
-
- Guille Carlos
|
19
|
-
-
|
20
|
-
-
|
21
|
-
-
|
22
|
-
-
|
23
|
-
-
|
24
|
-
-
|
25
|
-
-
|
26
|
-
-
|
27
|
-
-
|
28
|
-
-
|
29
|
-
-
|
30
|
-
-
|
31
|
-
-
|
7
|
+
- Adam Ballai
|
8
|
+
- Alexander Murmann & Ryan Spore
|
9
|
+
- Andrew Benton
|
10
|
+
- Brian Levine
|
11
|
+
- Caley Woods
|
12
|
+
- Carlos Diaz-Padron
|
13
|
+
- Connor Montgomery
|
14
|
+
- Doug Black
|
15
|
+
- Elaine Tsai
|
16
|
+
- Fiona Tay & Will Read
|
17
|
+
- Geoff Petrie
|
18
|
+
- Guille Carlos
|
19
|
+
- Jeremy Franz
|
20
|
+
- Josh Hull
|
21
|
+
- Joël Franusic
|
22
|
+
- K Gautam Pai
|
23
|
+
- Karl Freeman
|
24
|
+
- Kevin Burke
|
25
|
+
- Kyle Conroy
|
26
|
+
- Leo Adamek
|
27
|
+
- Oscar
|
28
|
+
- Oscar Sanchez
|
29
|
+
- Phil Nash
|
30
|
+
- Rafael Chacon
|
31
|
+
- Ryan Spore
|
32
|
+
- Sam Kimbrel
|
33
|
+
- Torey Heinz
|
34
|
+
- Vipul A M
|
35
|
+
- vfrride
|
data/{CHANGES → CHANGES.md}
RENAMED
@@ -1,6 +1,14 @@
|
|
1
1
|
twilio-ruby changelog
|
2
2
|
=====================
|
3
3
|
|
4
|
+
Version 3.11.6
|
5
|
+
|
6
|
+
Released July 25, 2014
|
7
|
+
|
8
|
+
- Add #to_xml to TwiML Responses.
|
9
|
+
- Updated test / development dependencies.
|
10
|
+
- Updated to RSpec 3 syntax.
|
11
|
+
|
4
12
|
Version 3.11.5
|
5
13
|
|
6
14
|
Released February 4
|
data/Gemfile
CHANGED
data/{LICENSE → LICENSE.md}
RENAMED
data/Makefile
CHANGED
data/README.md
CHANGED
@@ -1,15 +1,20 @@
|
|
1
|
-
[][gem]
|
2
|
+
[][travis]
|
3
|
+
[][codeclimate]
|
3
4
|
|
4
5
|
# twilio-ruby
|
5
6
|
|
6
|
-
A module for using the Twilio REST API and generating valid
|
7
|
-
[TwiML](http://www.twilio.com/docs/api/twiml/ "TwiML - Twilio Markup Language").
|
8
|
-
[Click here to read the full documentation.][documentation]
|
7
|
+
A module for using the Twilio REST API and generating valid [TwiML](http://www.twilio.com/docs/api/twiml/ "TwiML - Twilio Markup Language"). [Click here to read the full documentation.][documentation]
|
9
8
|
|
10
|
-
##
|
9
|
+
## Installation
|
11
10
|
|
12
|
-
|
11
|
+
To install using [Bundler][bundler] grab the latest stable version:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'twilio-ruby', '~> 3.11'
|
15
|
+
```
|
16
|
+
|
17
|
+
To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
|
13
18
|
|
14
19
|
```bash
|
15
20
|
gem install twilio-ruby
|
@@ -135,7 +140,7 @@ section of the wiki.
|
|
135
140
|
|
136
141
|
## Getting Started With TwiML
|
137
142
|
|
138
|
-
TwiML support is based on the [
|
143
|
+
TwiML support is based on the [Builder][builder] library. You can construct a
|
139
144
|
TwiML response like this:
|
140
145
|
|
141
146
|
``` ruby
|
@@ -156,7 +161,7 @@ puts response.text
|
|
156
161
|
|
157
162
|
This will print the following (except for the whitespace):
|
158
163
|
|
159
|
-
```
|
164
|
+
``` xml
|
160
165
|
<?xml version="1.0" encoding="UTF-8"?>
|
161
166
|
<Response>
|
162
167
|
<Say voice="alice">hello there</Say>
|
@@ -166,16 +171,33 @@ This will print the following (except for the whitespace):
|
|
166
171
|
</Response>
|
167
172
|
```
|
168
173
|
|
169
|
-
##
|
174
|
+
## Supported Ruby Versions
|
170
175
|
|
171
|
-
|
172
|
-
|
176
|
+
This library supports and is [tested against][travis] the following Ruby
|
177
|
+
implementations:
|
178
|
+
|
179
|
+
- Ruby 2.1.0
|
180
|
+
- Ruby 2.0.0
|
181
|
+
- Ruby 1.9.3
|
182
|
+
- Ruby 1.8.7
|
183
|
+
- [JRuby][jruby]
|
184
|
+
- [Rubinius][rubinius]
|
173
185
|
|
174
|
-
|
186
|
+
## More Information
|
175
187
|
|
176
|
-
[
|
177
|
-
[
|
178
|
-
|
179
|
-
[
|
180
|
-
[
|
181
|
-
[
|
188
|
+
There are more detailed examples in the included [examples][examples]
|
189
|
+
directory. Also for thoose upgrading, the [upgrade guide][upgrade] is available in the [twilio-ruby github wiki][wiki].
|
190
|
+
|
191
|
+
[capability]: https://github.com/twilio/twilio-ruby/wiki/Capability
|
192
|
+
[builder]: http://builder.rubyforge.org/
|
193
|
+
[examples]: https://github.com/twilio/twilio-ruby/blob/master/examples
|
194
|
+
[documentation]: http://twilio-ruby.readthedocs.org/en/latest
|
195
|
+
[upgrade]: https://github.com/twilio/twilio-ruby/wiki/UpgradeGuide
|
196
|
+
[wiki]: https://github.com/twilio/twilio-ruby/wiki
|
197
|
+
[bundler]: http://bundler.io
|
198
|
+
[rubygems]: http://rubygems.org
|
199
|
+
[gem]: https://rubygems.org/gems/twilio
|
200
|
+
[travis]: http://travis-ci.org/twilio/twilio-ruby
|
201
|
+
[codeclimate]: https://codeclimate.com/github/twilio/twilio-ruby
|
202
|
+
[jruby]: http://www.jruby.org
|
203
|
+
[rubinius]: http://rubini.us
|
data/Rakefile
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
spec = eval(File.read('twilio-ruby.gemspec'))
|
1
|
+
require 'bundler'
|
2
|
+
Bundler.setup
|
3
|
+
Bundler::GemHelper.install_tasks
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
desc 'Run all specs'
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
10
8
|
|
11
|
-
|
12
|
-
task :
|
9
|
+
task :default => :spec
|
10
|
+
task :test => :spec
|
data/docs/usage/twiml.rst
CHANGED
@@ -48,7 +48,11 @@ module Twilio
|
|
48
48
|
API_VERSION = '2010-04-01'
|
49
49
|
|
50
50
|
# 1.8.7 doesn't have the RUBY_ENGINE constant.
|
51
|
-
|
51
|
+
if defined?(RUBY_ENGINE)
|
52
|
+
engine = RUBY_ENGINE
|
53
|
+
else
|
54
|
+
engine = 'ruby'
|
55
|
+
end
|
52
56
|
|
53
57
|
HTTP_HEADERS = {
|
54
58
|
'Accept' => 'application/json',
|
data/lib/twilio-ruby/version.rb
CHANGED
data/spec/rest/account_spec.rb
CHANGED
@@ -7,52 +7,52 @@ describe Twilio::REST::Account do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'sets up incoming phone numbers resources object' do
|
10
|
-
@account.
|
11
|
-
@account.incoming_phone_numbers.instance_variable_get('@path').
|
10
|
+
expect(@account).to respond_to(:incoming_phone_numbers)
|
11
|
+
expect(@account.incoming_phone_numbers.instance_variable_get('@path')).to eq('someUri/IncomingPhoneNumbers')
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'sets up an available phone numbers resources object' do
|
15
|
-
@account.
|
16
|
-
@account.available_phone_numbers.instance_variable_get('@path').
|
15
|
+
expect(@account).to respond_to(:available_phone_numbers)
|
16
|
+
expect(@account.available_phone_numbers.instance_variable_get('@path')).to eq('someUri/AvailablePhoneNumbers')
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'sets up an outgoing caller ids resources object' do
|
20
|
-
@account.
|
21
|
-
@account.outgoing_caller_ids.instance_variable_get('@path').
|
20
|
+
expect(@account).to respond_to(:outgoing_caller_ids)
|
21
|
+
expect(@account.outgoing_caller_ids.instance_variable_get('@path')).to eq('someUri/OutgoingCallerIds')
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'sets up a calls resources object' do
|
25
|
-
@account.
|
26
|
-
@account.calls.instance_variable_get('@path').
|
25
|
+
expect(@account).to respond_to(:calls)
|
26
|
+
expect(@account.calls.instance_variable_get('@path')).to eq('someUri/Calls')
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'sets up a conferences resources object' do
|
30
|
-
@account.
|
31
|
-
@account.conferences.instance_variable_get('@path').
|
30
|
+
expect(@account).to respond_to(:conferences)
|
31
|
+
expect(@account.conferences.instance_variable_get('@path')).to eq('someUri/Conferences')
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'sets up a queues resources object' do
|
35
|
-
@account.
|
36
|
-
@account.queues.instance_variable_get('@path').
|
35
|
+
expect(@account).to respond_to(:queues)
|
36
|
+
expect(@account.queues.instance_variable_get('@path')).to eq('someUri/Queues')
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'sets up a sms resource object' do
|
40
|
-
@account.
|
41
|
-
@account.sms.instance_variable_get('@path').
|
40
|
+
expect(@account).to respond_to(:sms)
|
41
|
+
expect(@account.sms.instance_variable_get('@path')).to eq('someUri/SMS')
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'sets up a recordings resources object' do
|
45
|
-
@account.
|
46
|
-
@account.recordings.instance_variable_get('@path').
|
45
|
+
expect(@account).to respond_to(:recordings)
|
46
|
+
expect(@account.recordings.instance_variable_get('@path')).to eq('someUri/Recordings')
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'sets up a transcriptions resources object' do
|
50
|
-
@account.
|
51
|
-
@account.transcriptions.instance_variable_get('@path').
|
50
|
+
expect(@account).to respond_to(:transcriptions)
|
51
|
+
expect(@account.transcriptions.instance_variable_get('@path')).to eq('someUri/Transcriptions')
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'sets up a notifications resources object' do
|
55
|
-
@account.
|
56
|
-
@account.notifications.instance_variable_get('@path').
|
55
|
+
expect(@account).to respond_to(:notifications)
|
56
|
+
expect(@account.notifications.instance_variable_get('@path')).to eq('someUri/Notifications')
|
57
57
|
end
|
58
58
|
end
|
data/spec/rest/call_spec.rb
CHANGED
@@ -7,12 +7,12 @@ describe Twilio::REST::Call do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'sets up a recordings resources object' do
|
10
|
-
@call.
|
11
|
-
@call.recordings.instance_variable_get('@path').
|
10
|
+
expect(@call).to respond_to(:recordings)
|
11
|
+
expect(@call.recordings.instance_variable_get('@path')).to eq('someUri/Recordings')
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'sets up a notifications resources object' do
|
15
|
-
@call.
|
16
|
-
@call.notifications.instance_variable_get('@path').
|
15
|
+
expect(@call).to respond_to(:notifications)
|
16
|
+
expect(@call.notifications.instance_variable_get('@path')).to eq('someUri/Notifications')
|
17
17
|
end
|
18
18
|
end
|
data/spec/rest/client_spec.rb
CHANGED
@@ -17,84 +17,88 @@ describe Twilio::REST::Client do
|
|
17
17
|
|
18
18
|
it 'should set up a new client instance with the given sid and token' do
|
19
19
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
20
|
-
twilio.account_sid.
|
21
|
-
twilio.instance_variable_get('@auth_token').
|
20
|
+
expect(twilio.account_sid).to eq('someSid')
|
21
|
+
expect(twilio.instance_variable_get('@auth_token')).to eq('someToken')
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'should set up the proper default http ssl connection' do
|
25
25
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
26
26
|
connection = twilio.instance_variable_get('@connection')
|
27
|
-
connection.address.
|
28
|
-
connection.port.
|
29
|
-
connection.use_ssl
|
27
|
+
expect(connection.address).to eq('api.twilio.com')
|
28
|
+
expect(connection.port).to eq(443)
|
29
|
+
expect(connection.use_ssl?).to eq(true)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should set up the requested ssl verification ca_file if provided' do
|
33
33
|
twilio = Twilio::REST::Client.new('someSid', 'someToken', :ssl_ca_file => '/path/to/ca/file')
|
34
34
|
connection = twilio.instance_variable_get('@connection')
|
35
|
-
connection.ca_file.
|
35
|
+
expect(connection.ca_file).to eq('/path/to/ca/file')
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'should set up the proper http ssl connection when a different domain is given' do
|
39
39
|
twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com')
|
40
40
|
connection = twilio.instance_variable_get('@connection')
|
41
|
-
connection.address.
|
42
|
-
connection.port.
|
43
|
-
connection.use_ssl
|
41
|
+
expect(connection.address).to eq('api.faketwilio.com')
|
42
|
+
expect(connection.port).to eq(443)
|
43
|
+
expect(connection.use_ssl?).to eq(true)
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'should adjust the open and read timeouts on the underlying Net::HTTP object when asked' do
|
47
47
|
timeout = rand(30)
|
48
48
|
twilio = Twilio::REST::Client.new('someSid', 'someToken', :timeout => timeout)
|
49
49
|
connection = twilio.instance_variable_get('@connection')
|
50
|
-
connection.port.
|
51
|
-
connection.use_ssl
|
52
|
-
connection.open_timeout.
|
53
|
-
connection.read_timeout.
|
50
|
+
expect(connection.port).to eq(443)
|
51
|
+
expect(connection.use_ssl?).to eq(true)
|
52
|
+
expect(connection.open_timeout).to eq(timeout)
|
53
|
+
expect(connection.read_timeout).to eq(timeout)
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'should set up the proper http ssl connection when a proxy_host is given' do
|
57
57
|
twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com', :proxy_addr => 'localhost')
|
58
58
|
connection = twilio.instance_variable_get('@connection')
|
59
|
-
connection.proxy
|
60
|
-
connection.proxy_address.
|
61
|
-
connection.proxy_port.
|
62
|
-
connection.address.
|
63
|
-
connection.port.
|
64
|
-
connection.use_ssl
|
59
|
+
expect(connection.proxy?).to eq(true)
|
60
|
+
expect(connection.proxy_address).to eq('localhost')
|
61
|
+
expect(connection.proxy_port).to eq(80)
|
62
|
+
expect(connection.address).to eq('api.faketwilio.com')
|
63
|
+
expect(connection.port).to eq(443)
|
64
|
+
expect(connection.use_ssl?).to eq(true)
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'should set up the proper http ssl connection when a proxy_host and proxy_port are given' do
|
68
68
|
twilio = Twilio::REST::Client.new('someSid', 'someToken', :host => 'api.faketwilio.com', :proxy_addr => 'localhost', :proxy_port => 13128)
|
69
69
|
connection = twilio.instance_variable_get('@connection')
|
70
|
-
connection.proxy
|
71
|
-
connection.proxy_address.
|
72
|
-
connection.proxy_port.
|
73
|
-
connection.address.
|
74
|
-
connection.port.
|
75
|
-
connection.use_ssl
|
70
|
+
expect(connection.proxy?).to eq(true)
|
71
|
+
expect(connection.proxy_address).to eq('localhost')
|
72
|
+
expect(connection.proxy_port).to eq(13128)
|
73
|
+
expect(connection.address).to eq('api.faketwilio.com')
|
74
|
+
expect(connection.port).to eq(443)
|
75
|
+
expect(connection.use_ssl?).to eq(true)
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'should set up an accounts resources object' do
|
79
79
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
80
|
-
twilio.
|
81
|
-
twilio.accounts.instance_variable_get('@path').
|
80
|
+
expect(twilio).to respond_to(:accounts)
|
81
|
+
expect(twilio.accounts.instance_variable_get('@path')).to eq('/2010-04-01/Accounts')
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'should set up an account object with the given sid' do
|
85
85
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
86
|
-
twilio.
|
87
|
-
twilio.account.instance_variable_get('@path').
|
86
|
+
expect(twilio).to respond_to(:account)
|
87
|
+
expect(twilio.account.instance_variable_get('@path')).to eq('/2010-04-01/Accounts/someSid')
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'should convert all parameter names to Twilio-style names' do
|
91
91
|
twilio = Twilio::REST::Client.new('someSid', 'someToken')
|
92
|
-
untwilified = {
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
92
|
+
untwilified = {
|
93
|
+
:sms_url => 'someUrl',
|
94
|
+
'voiceFallbackUrl' => 'anotherUrl',
|
95
|
+
'Status_callback' => 'yetAnotherUrl'
|
96
|
+
}
|
97
|
+
twilified = {
|
98
|
+
:SmsUrl => 'someUrl',
|
99
|
+
:VoiceFallbackUrl => 'anotherUrl',
|
100
|
+
:StatusCallback => 'yetAnotherUrl'
|
101
|
+
}
|
102
|
+
expect(twilio.twilify(untwilified)).to eq(twilified)
|
99
103
|
end
|
100
104
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Twilio::REST::Conference do
|
4
4
|
it 'should set up a participants resources object' do
|
5
5
|
conference = Twilio::REST::Conference.new('someUri', 'someClient')
|
6
|
-
conference.
|
7
|
-
conference.participants.instance_variable_get('@path').
|
6
|
+
expect(conference).to respond_to(:participants)
|
7
|
+
expect(conference.participants.instance_variable_get('@path')).to eq('someUri/Participants')
|
8
8
|
end
|
9
9
|
end
|
@@ -3,13 +3,13 @@ require 'spec_helper'
|
|
3
3
|
describe Twilio::REST::InstanceResource do
|
4
4
|
it 'should set up an internal reference to the uri and client' do
|
5
5
|
resource = Twilio::REST::InstanceResource.new('some/uri', 'someClient')
|
6
|
-
resource.instance_variable_get('@path').
|
7
|
-
resource.instance_variable_get('@client').
|
6
|
+
expect(resource.instance_variable_get('@path')).to eq('some/uri')
|
7
|
+
expect(resource.instance_variable_get('@client')).to eq('someClient')
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should set up object properties if passed' do
|
11
11
|
params = {'SomeKey' => 'someValue'}
|
12
12
|
resource = Twilio::REST::InstanceResource.new('uri', 'client', params)
|
13
|
-
resource.some_key.
|
13
|
+
expect(resource.some_key).to eq('someValue')
|
14
14
|
end
|
15
15
|
end
|
data/spec/rest/message_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe Twilio::REST::Message do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it 'sets up a media resources object' do
|
9
|
-
@message.
|
10
|
-
@message.media.instance_variable_get('@path').
|
9
|
+
expect(@message).to respond_to(:media)
|
10
|
+
expect(@message.media.instance_variable_get('@path')).to eq('someUri/Media')
|
11
11
|
end
|
12
12
|
end
|
data/spec/rest/numbers_spec.rb
CHANGED
@@ -7,18 +7,18 @@ describe Twilio::REST::Country do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'sets up a local resources object' do
|
10
|
-
@country.
|
11
|
-
@country.local.instance_variable_get('@path').
|
10
|
+
expect(@country).to respond_to(:local)
|
11
|
+
expect(@country.local.instance_variable_get('@path')).to eq('someUri/Local')
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'sets up a toll_free resources object' do
|
15
|
-
@country.
|
16
|
-
@country.toll_free.instance_variable_get('@path').
|
15
|
+
expect(@country).to respond_to(:toll_free)
|
16
|
+
expect(@country.toll_free.instance_variable_get('@path')).to eq('someUri/TollFree')
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'sets up a mobile resources object' do
|
20
|
-
@country.
|
21
|
-
@country.mobile.instance_variable_get('@path').
|
20
|
+
expect(@country).to respond_to(:mobile)
|
21
|
+
expect(@country.mobile.instance_variable_get('@path')).to eq('someUri/Mobile')
|
22
22
|
end
|
23
23
|
|
24
24
|
end
|
@@ -30,17 +30,17 @@ describe Twilio::REST::NumberType do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'sets up a local resources object' do
|
33
|
-
@incoming_phone_numbers.
|
34
|
-
@incoming_phone_numbers.local.instance_variable_get('@path').
|
33
|
+
expect(@incoming_phone_numbers).to respond_to(:local)
|
34
|
+
expect(@incoming_phone_numbers.local.instance_variable_get('@path')).to eq('someUri/Local')
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'sets up a toll_free resources object' do
|
38
|
-
@incoming_phone_numbers.
|
39
|
-
@incoming_phone_numbers.toll_free.instance_variable_get('@path').
|
38
|
+
expect(@incoming_phone_numbers).to respond_to(:toll_free)
|
39
|
+
expect(@incoming_phone_numbers.toll_free.instance_variable_get('@path')).to eq('someUri/TollFree')
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'sets up a mobile resources object' do
|
43
|
-
@incoming_phone_numbers.
|
44
|
-
@incoming_phone_numbers.mobile.instance_variable_get('@path').
|
43
|
+
expect(@incoming_phone_numbers).to respond_to(:mobile)
|
44
|
+
expect(@incoming_phone_numbers.mobile.instance_variable_get('@path')).to eq('someUri/Mobile')
|
45
45
|
end
|
46
46
|
end
|
data/spec/rest/queue_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Twilio::REST::Queue do
|
4
4
|
it 'should set up a members resources object' do
|
5
5
|
queue = Twilio::REST::Queue.new('someUri', 'someClient')
|
6
|
-
queue.
|
7
|
-
queue.members.instance_variable_get('@path').
|
6
|
+
expect(queue).to respond_to(:members)
|
7
|
+
expect(queue.members.instance_variable_get('@path')).to eq('someUri/Members')
|
8
8
|
end
|
9
9
|
end
|
data/spec/rest/recording_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Twilio::REST::Recording do
|
4
4
|
it 'should set up a transcriptions resources object' do
|
5
5
|
call = Twilio::REST::Recording.new('someUri', 'someClient')
|
6
|
-
call.
|
7
|
-
call.transcriptions.instance_variable_get('@path').
|
6
|
+
expect(call).to respond_to(:transcriptions)
|
7
|
+
expect(call.transcriptions.instance_variable_get('@path')).to eq('someUri/Transcriptions')
|
8
8
|
end
|
9
9
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
-
$LOAD_PATH
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
Bundler.setup
|
5
|
+
|
6
|
+
Dir.glob(File.expand_path("../support/**/*.rb", __FILE__), &method(:require))
|
7
|
+
|
2
8
|
require 'twilio-ruby'
|
3
|
-
require 'fakeweb'
|
4
9
|
require 'rack'
|
5
10
|
|
6
|
-
|
11
|
+
RSpec.configure do |config|
|
12
|
+
config.expect_with :rspec do |c|
|
13
|
+
c.syntax = :expect
|
14
|
+
end
|
15
|
+
end
|
@@ -11,56 +11,56 @@ describe Twilio::Util::Capability do
|
|
11
11
|
|
12
12
|
it 'should return a valid jwt when #generate is called' do
|
13
13
|
token = @capability.generate
|
14
|
-
decoded = JWT.decode token, 'myAuthToken'
|
15
|
-
decoded['scope'].
|
16
|
-
decoded['iss'].
|
17
|
-
decoded['exp'].
|
14
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
15
|
+
expect(decoded['scope']).not_to be_nil
|
16
|
+
expect(decoded['iss']).not_to be_nil
|
17
|
+
expect(decoded['exp']).not_to be_nil
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'should properly set the iss key in the payload' do
|
21
21
|
token = @capability.generate
|
22
|
-
decoded = JWT.decode token, 'myAuthToken'
|
23
|
-
decoded['iss'].
|
22
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
23
|
+
expect(decoded['iss']).to eq('myAccountSid')
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should properly set the exp key based on the default hour ttl' do
|
27
27
|
seconds = Time.now.to_i
|
28
28
|
token = @capability.generate
|
29
|
-
decoded = JWT.decode token, 'myAuthToken'
|
30
|
-
decoded['exp'].
|
29
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
30
|
+
expect(decoded['exp']).to eq(seconds + 3600)
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should properly set the exp key based on the ttl passed to #generate' do
|
34
34
|
ttl = rand 10000
|
35
35
|
seconds = Time.now.to_i
|
36
36
|
token = @capability.generate ttl
|
37
|
-
decoded = JWT.decode token, 'myAuthToken'
|
38
|
-
decoded['exp'].
|
37
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
38
|
+
expect(decoded['exp']).to eq(seconds + ttl)
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should generate a proper incoming client scope string' do
|
42
42
|
@capability.allow_client_incoming 'andrew'
|
43
43
|
token = @capability.generate
|
44
|
-
decoded = JWT.decode token, 'myAuthToken'
|
45
|
-
queries(decoded['scope']).
|
44
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
45
|
+
expect(queries(decoded['scope'])).to eq([['incoming', {'clientName' => 'andrew'}]])
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'should generate multiple proper incoming client scope strings' do
|
49
49
|
@capability.allow_client_incoming 'andrew'
|
50
50
|
@capability.allow_client_incoming 'bridget'
|
51
51
|
token = @capability.generate
|
52
|
-
decoded = JWT.decode token, 'myAuthToken'
|
53
|
-
queries(decoded['scope']).
|
52
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
53
|
+
expect(queries(decoded['scope'])).to eq([
|
54
54
|
['incoming', {'clientName' => 'andrew'}],
|
55
55
|
['incoming', {'clientName' => 'bridget'}]
|
56
|
-
]
|
56
|
+
])
|
57
57
|
end
|
58
58
|
|
59
59
|
it 'should generate a proper outgoing client scope string' do
|
60
60
|
@capability.allow_client_outgoing 'myAppSid'
|
61
61
|
token = @capability.generate
|
62
|
-
decoded = JWT.decode token, 'myAuthToken'
|
63
|
-
queries(decoded['scope']).
|
62
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
63
|
+
expect(queries(decoded['scope'])).to eq([['outgoing', {'appSid' => 'myAppSid'}]])
|
64
64
|
end
|
65
65
|
|
66
66
|
it 'should generate a proper outgoing client scope string with parameters' do
|
@@ -70,8 +70,8 @@ describe Twilio::Util::Capability do
|
|
70
70
|
params_hash = {'appSid' => 'myAppSid', 'appParams' => app_params}
|
71
71
|
@capability.instance_eval {url_encode(params_hash)}
|
72
72
|
token = @capability.generate
|
73
|
-
decoded = JWT.decode token, 'myAuthToken'
|
74
|
-
queries(decoded['scope']).
|
73
|
+
decoded, header= JWT.decode token, 'myAuthToken'
|
74
|
+
expect(queries(decoded['scope'])).to eq([['outgoing', params_hash]])
|
75
75
|
end
|
76
76
|
|
77
77
|
it 'should generate a proper outgoing client scope string based on the ' +
|
@@ -79,11 +79,11 @@ describe Twilio::Util::Capability do
|
|
79
79
|
@capability.allow_client_incoming 'andrew'
|
80
80
|
@capability.allow_client_outgoing 'myAppSid'
|
81
81
|
token = @capability.generate
|
82
|
-
decoded = JWT.decode token, 'myAuthToken'
|
83
|
-
queries(decoded['scope']).
|
82
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
83
|
+
expect(queries(decoded['scope'])).to eq([
|
84
84
|
['incoming', {'clientName' => 'andrew'}],
|
85
85
|
['outgoing', {'clientName' => 'andrew', 'appSid' => 'myAppSid'}]
|
86
|
-
]
|
86
|
+
])
|
87
87
|
end
|
88
88
|
|
89
89
|
it 'should generate a proper outgoing client scope string based on the ' +
|
@@ -91,8 +91,8 @@ describe Twilio::Util::Capability do
|
|
91
91
|
@capability.allow_client_outgoing 'myAppSid'
|
92
92
|
@capability.allow_client_incoming 'andrew'
|
93
93
|
token = @capability.generate
|
94
|
-
decoded = JWT.decode token, 'myAuthToken'
|
95
|
-
queries(decoded['scope']).
|
94
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
95
|
+
expect(queries(decoded['scope'])).to eq([["incoming", {"clientName"=>"andrew"}], ["outgoing", {"clientName"=>"andrew", "appSid"=>"myAppSid"}]])
|
96
96
|
end
|
97
97
|
|
98
98
|
it 'should generate a proper outgoing client scope string with parameters ' +
|
@@ -104,15 +104,15 @@ describe Twilio::Util::Capability do
|
|
104
104
|
params_hash = {'appSid' => 'myAppSid', 'appParams' => app_params, 'clientName' => 'andrew'}
|
105
105
|
@capability.instance_eval {url_encode(params_hash)}
|
106
106
|
token = @capability.generate
|
107
|
-
decoded = JWT.decode token, 'myAuthToken'
|
107
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
108
108
|
scopes = queries(decoded['scope'])
|
109
|
-
scopes.shift.
|
109
|
+
expect(scopes.shift).to eq(["incoming", {"clientName"=>"andrew"}])
|
110
110
|
scope = scopes.shift
|
111
|
-
scope.first.
|
112
|
-
Rack::Utils.parse_query(scope.last['appParams']).
|
113
|
-
scope.last["clientName"].
|
114
|
-
scope.last["appSid"].
|
115
|
-
scopes.
|
111
|
+
expect(scope.first).to eq('outgoing')
|
112
|
+
expect(Rack::Utils.parse_query(scope.last['appParams'])).to eq({'key' => 'a value', 'foo' => 'bar/baz'})
|
113
|
+
expect(scope.last["clientName"]).to eq("andrew")
|
114
|
+
expect(scope.last["appSid"]).to eq("myAppSid")
|
115
|
+
expect(scopes).to be_empty
|
116
116
|
end
|
117
117
|
|
118
118
|
it 'should generate a proper outgoing client scope string with parameters ' +
|
@@ -124,14 +124,14 @@ describe Twilio::Util::Capability do
|
|
124
124
|
params_hash = {'appSid' => 'myAppSid', 'appParams' => app_params, 'clientName' => 'andrew'}
|
125
125
|
@capability.instance_eval {url_encode(params_hash)}
|
126
126
|
token = @capability.generate
|
127
|
-
decoded = JWT.decode token, 'myAuthToken'
|
127
|
+
decoded, header = JWT.decode token, 'myAuthToken'
|
128
128
|
scopes = queries(decoded['scope'])
|
129
|
-
scopes.shift.
|
129
|
+
expect(scopes.shift).to eq(["incoming", {"clientName"=>"andrew"}])
|
130
130
|
scope = scopes.shift
|
131
|
-
scope.first.
|
132
|
-
Rack::Utils.parse_query(scope.last['appParams']).
|
133
|
-
scope.last["clientName"].
|
134
|
-
scope.last["appSid"].
|
135
|
-
scopes.
|
131
|
+
expect(scope.first).to eq('outgoing')
|
132
|
+
expect(Rack::Utils.parse_query(scope.last['appParams'])).to eq({'key' => 'a value', 'foo' => 'bar/baz'})
|
133
|
+
expect(scope.last["clientName"]).to eq("andrew")
|
134
|
+
expect(scope.last["appSid"]).to eq("myAppSid")
|
135
|
+
expect(scopes).to be_empty
|
136
136
|
end
|
137
137
|
end
|
@@ -34,7 +34,7 @@ describe Twilio::Util::RequestValidator do
|
|
34
34
|
'ApplicationSid' => 'AP44efecad51364e80b133bb7c07eb8204'
|
35
35
|
}
|
36
36
|
signature = 'oVb2kXoVy8GEfwBDjR8bk/ZZ6eA='
|
37
|
-
validator.validate(url, params, signature).
|
37
|
+
expect(validator.validate(url, params, signature)).to eq(true)
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'should properly validate a Twilio SMS request' do
|
@@ -60,6 +60,6 @@ describe Twilio::Util::RequestValidator do
|
|
60
60
|
'SmsSid' => 'SM2003cbd5e6a3701999aa3e5f20ff2787'
|
61
61
|
}
|
62
62
|
signature = 'mxeiv65lEe0b8L6LdVw2jgJi8yw='
|
63
|
-
validator.validate(url, params, signature).
|
63
|
+
expect(validator.validate(url, params, signature)).to eq(true)
|
64
64
|
end
|
65
65
|
end
|
data/twilio-ruby.gemspec
CHANGED
@@ -1,33 +1,35 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'twilio-ruby/version'
|
2
5
|
|
3
|
-
Gem::Specification.new do |
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'twilio-ruby'
|
8
|
+
spec.version = Twilio::VERSION
|
9
|
+
spec.authors = ['Andrew Benton']
|
10
|
+
spec.email = ['andrew@twilio.com']
|
11
|
+
spec.summary = 'A simple library for communicating with the Twilio REST API, building TwiML, and generating Twilio Client Capability Tokens'
|
12
|
+
spec.description = 'A simple library for communicating with the Twilio REST API, building TwiML, and generating Twilio Client Capability Tokens'
|
13
|
+
spec.homepage = 'http://github.com/twilio/twilio-ruby'
|
14
|
+
spec.license = 'MIT'
|
8
15
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.required_ruby_version = '>= 1.8.7'
|
21
|
+
spec.extra_rdoc_files = ['README.md', 'LICENSE.md']
|
22
|
+
spec.rdoc_options = ['--line-numbers', '--inline-source', '--title', 'twilio-ruby', '--main', 'README.md']
|
13
23
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
s.add_dependency('multi_json', '>= 1.3.0')
|
20
|
-
s.add_dependency('builder', '>= 2.1.2')
|
21
|
-
s.add_dependency('jwt', '>= 0.1.2')
|
22
|
-
s.add_dependency('jruby-openssl') if RUBY_PLATFORM == 'java'
|
24
|
+
spec.add_dependency('multi_json', '>= 1.3.0')
|
25
|
+
spec.add_dependency('builder', '>= 2.1.2')
|
26
|
+
spec.add_dependency('jwt', '>= 0.1.2')
|
27
|
+
spec.add_dependency('jruby-openssl') if RUBY_PLATFORM == 'java'
|
23
28
|
# Workaround for RBX <= 2.2.1, should be fixed in next version
|
24
|
-
|
25
|
-
|
26
|
-
s.add_development_dependency 'rake', '~> 0.9.0'
|
27
|
-
s.add_development_dependency 'rspec', '~> 2.6.0'
|
28
|
-
s.add_development_dependency 'fakeweb', '~> 1.3.0'
|
29
|
-
s.add_development_dependency 'rack', '~> 1.3.0'
|
29
|
+
spec.add_dependency('rubysl') if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
spec.add_development_dependency 'rspec', '~> 2.14'
|
32
|
+
spec.add_development_dependency 'fakeweb', '~> 1.3.0'
|
33
|
+
spec.add_development_dependency 'rack', '~> 1.3.0'
|
34
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
33
35
|
end
|
metadata
CHANGED
@@ -1,128 +1,129 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twilio-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.11.
|
4
|
+
version: 3.11.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Benton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: builder
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.1.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.1.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: jwt
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.1.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.1.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '2.14'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '2.14'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: fakeweb
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 1.3.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 1.3.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rack
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 1.3.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.3.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: '1.5'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: '1.5'
|
111
111
|
description: A simple library for communicating with the Twilio REST API, building
|
112
112
|
TwiML, and generating Twilio Client Capability Tokens
|
113
|
-
email:
|
113
|
+
email:
|
114
|
+
- andrew@twilio.com
|
114
115
|
executables: []
|
115
116
|
extensions: []
|
116
117
|
extra_rdoc_files:
|
117
118
|
- README.md
|
118
|
-
- LICENSE
|
119
|
+
- LICENSE.md
|
119
120
|
files:
|
120
|
-
-
|
121
|
-
-
|
121
|
+
- .gitignore
|
122
|
+
- .travis.yml
|
122
123
|
- AUTHORS.md
|
123
|
-
- CHANGES
|
124
|
+
- CHANGES.md
|
124
125
|
- Gemfile
|
125
|
-
- LICENSE
|
126
|
+
- LICENSE.md
|
126
127
|
- Makefile
|
127
128
|
- README.md
|
128
129
|
- Rakefile
|
@@ -225,6 +226,7 @@ files:
|
|
225
226
|
- spec/rest/queue_spec.rb
|
226
227
|
- spec/rest/recording_spec.rb
|
227
228
|
- spec/spec_helper.rb
|
229
|
+
- spec/support/fakeweb.rb
|
228
230
|
- spec/util/capability_spec.rb
|
229
231
|
- spec/util/request_validator_spec.rb
|
230
232
|
- spec/util/url_encode_spec.rb
|
@@ -235,27 +237,27 @@ licenses:
|
|
235
237
|
metadata: {}
|
236
238
|
post_install_message:
|
237
239
|
rdoc_options:
|
238
|
-
-
|
239
|
-
-
|
240
|
-
-
|
240
|
+
- --line-numbers
|
241
|
+
- --inline-source
|
242
|
+
- --title
|
241
243
|
- twilio-ruby
|
242
|
-
-
|
244
|
+
- --main
|
243
245
|
- README.md
|
244
246
|
require_paths:
|
245
247
|
- lib
|
246
248
|
required_ruby_version: !ruby/object:Gem::Requirement
|
247
249
|
requirements:
|
248
|
-
- -
|
250
|
+
- - ! '>='
|
249
251
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
252
|
+
version: 1.8.7
|
251
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
252
254
|
requirements:
|
253
|
-
- -
|
255
|
+
- - ! '>='
|
254
256
|
- !ruby/object:Gem::Version
|
255
257
|
version: '0'
|
256
258
|
requirements: []
|
257
259
|
rubyforge_project:
|
258
|
-
rubygems_version: 2.
|
260
|
+
rubygems_version: 2.4.1
|
259
261
|
signing_key:
|
260
262
|
specification_version: 4
|
261
263
|
summary: A simple library for communicating with the Twilio REST API, building TwiML,
|
@@ -271,6 +273,7 @@ test_files:
|
|
271
273
|
- spec/rest/queue_spec.rb
|
272
274
|
- spec/rest/recording_spec.rb
|
273
275
|
- spec/spec_helper.rb
|
276
|
+
- spec/support/fakeweb.rb
|
274
277
|
- spec/util/capability_spec.rb
|
275
278
|
- spec/util/request_validator_spec.rb
|
276
279
|
- spec/util/url_encode_spec.rb
|