twilio 3.1.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/CHANGELOG.rdoc +4 -0
- data/Gemfile +4 -2
- data/LICENSE +1 -1
- data/README.rdoc +9 -9
- data/lib/twilio.rb +3 -4
- data/lib/twilio/available_phone_numbers.rb +8 -1
- data/lib/twilio/incoming_phone_number.rb +4 -0
- data/lib/twilio/verb.rb +3 -1
- data/lib/twilio/version.rb +1 -1
- data/spec/fixtures/yml/verb_responses.yml +23 -23
- data/spec/support/twilio_helpers.rb +13 -13
- data/spec/twilio/account_spec.rb +8 -8
- data/spec/twilio/available_phone_numbers_spec.rb +25 -25
- data/spec/twilio/call_spec.rb +24 -24
- data/spec/twilio/conference_spec.rb +17 -17
- data/spec/twilio/incoming_phone_number_spec.rb +12 -12
- data/spec/twilio/live_connection_spec.rb +3 -3
- data/spec/twilio/notification_spec.rb +8 -8
- data/spec/twilio/outgoing_caller_id_spec.rb +15 -15
- data/spec/twilio/recording_spec.rb +14 -14
- data/spec/twilio/sms_spec.rb +11 -11
- data/spec/twilio/verb_spec.rb +8 -8
- data/twilio.gemspec +2 -2
- metadata +42 -17
data/.gitignore
CHANGED
data/CHANGELOG.rdoc
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -9,21 +9,21 @@ See http://www.twilio.com/docs/index for Twilio's API documentation.
|
|
9
9
|
First set your credentials by calling the connect method:
|
10
10
|
|
11
11
|
Twilio.connect('my_twilio_sid', 'my_auth_token')
|
12
|
-
|
12
|
+
|
13
13
|
Now call any of the Twilio classes:
|
14
|
-
|
14
|
+
|
15
15
|
Twilio::Call.make('1234567890', '9876543210', 'http://mysite.com/connected_call')
|
16
16
|
Twilio::Recording.list
|
17
|
-
|
17
|
+
|
18
18
|
== Responding to Twilio
|
19
19
|
|
20
|
-
When Twilio calls your application URL, your response must use the Twilio Markup XML (http://www.twilio.com/docs/api_reference/TwiML/). The Twilio gem makes this very easy
|
21
|
-
by providing a Twilio Verb class.
|
20
|
+
When Twilio calls your application URL, your response must use the Twilio Markup XML (http://www.twilio.com/docs/api_reference/TwiML/). The Twilio gem makes this very easy
|
21
|
+
by providing a Twilio Verb class.
|
22
22
|
|
23
23
|
For example, in a Ruby on Rails application, you could do the following inside a controller class:
|
24
24
|
|
25
25
|
Twilio::Verb.dial '415-123-4567'
|
26
|
-
|
26
|
+
|
27
27
|
and you can nest multiple verbs inside a block:
|
28
28
|
|
29
29
|
verb = Twilio::Verb.new { |v|
|
@@ -35,7 +35,7 @@ and you can nest multiple verbs inside a block:
|
|
35
35
|
== Installation
|
36
36
|
|
37
37
|
gem install twilio
|
38
|
-
|
38
|
+
|
39
39
|
== Contributing
|
40
40
|
|
41
41
|
1. Run 'bundle' from the command line to install dependencies
|
@@ -47,11 +47,11 @@ Note: don't require 'rubygems' in any file (http://www.rubyinside.com/why-using-
|
|
47
47
|
== Testing
|
48
48
|
|
49
49
|
* Currently using RSpec
|
50
|
-
* Tested with REE 1.8.7, MRI 1.9.2,
|
50
|
+
* Tested with REE 1.8.7, MRI 1.9.2, MRI 1.9.3, and JRuby 1.6.5
|
51
51
|
|
52
52
|
== Copyright
|
53
53
|
|
54
|
-
Copyright
|
54
|
+
Copyright Phil Misiowiec, Webficient LLC. See LICENSE for details.
|
55
55
|
|
56
56
|
== Contributors
|
57
57
|
|
data/lib/twilio.rb
CHANGED
@@ -22,7 +22,6 @@
|
|
22
22
|
#++
|
23
23
|
|
24
24
|
require 'httparty'
|
25
|
-
require 'builder'
|
26
25
|
|
27
26
|
require 'twilio/twilio_object'
|
28
27
|
|
@@ -37,11 +36,11 @@ require 'twilio/recording'
|
|
37
36
|
require 'twilio/sms'
|
38
37
|
require 'twilio/verb'
|
39
38
|
|
40
|
-
module Twilio
|
39
|
+
module Twilio
|
41
40
|
include HTTParty
|
42
41
|
TWILIO_URL = "https://api.twilio.com/2010-04-01/Accounts"
|
43
42
|
SSL_CA_PATH = "/etc/ssl/certs"
|
44
|
-
|
43
|
+
|
45
44
|
# The connect method caches your Twilio account id and authentication token
|
46
45
|
# Example:
|
47
46
|
# Twilio.connect('AC309475e5fede1b49e100272a8640f438', '3a2630a909aadbf60266234756fb15a0')
|
@@ -49,5 +48,5 @@ module Twilio
|
|
49
48
|
self.base_uri "#{TWILIO_URL}/#{account_sid}"
|
50
49
|
self.basic_auth account_sid, auth_token
|
51
50
|
self.default_options[:ssl_ca_path] ||= SSL_CA_PATH unless self.default_options[:ssl_ca_file]
|
52
|
-
end
|
51
|
+
end
|
53
52
|
end
|
@@ -22,7 +22,9 @@ module Twilio
|
|
22
22
|
:NearNumber => opts[:near_number],
|
23
23
|
:InLata => opts[:in_lata],
|
24
24
|
:InRateCenter => opts[:in_rate_center],
|
25
|
-
:Distance => opts[:distance]
|
25
|
+
:Distance => opts[:distance],
|
26
|
+
:Page => opts[:page],
|
27
|
+
:PageSize => opts[:page_size]
|
26
28
|
}.reject {|k,v| v == nil} unless opts.empty?
|
27
29
|
|
28
30
|
Twilio.get("/AvailablePhoneNumbers/#{iso_country_code}/#{resource}", :query => params)
|
@@ -39,6 +41,8 @@ module Twilio
|
|
39
41
|
# :in_lata
|
40
42
|
# :in_rate_center
|
41
43
|
# :distance
|
44
|
+
# :page
|
45
|
+
# :page_size
|
42
46
|
def search_local(opts ={})
|
43
47
|
opts = {:resource => 'Local'}.merge(opts)
|
44
48
|
search(opts)
|
@@ -46,7 +50,10 @@ module Twilio
|
|
46
50
|
|
47
51
|
# The search_toll_free method searches for available toll-free numbers
|
48
52
|
# Search Options
|
53
|
+
# :area_code
|
49
54
|
# :contains
|
55
|
+
# :page
|
56
|
+
# :page_size
|
50
57
|
def search_toll_free(opts ={})
|
51
58
|
opts = {:resource => 'TollFree'}.merge(opts)
|
52
59
|
search(opts)
|
@@ -23,6 +23,10 @@ module Twilio
|
|
23
23
|
Twilio.post("/IncomingPhoneNumbers", :body => opts)
|
24
24
|
end
|
25
25
|
|
26
|
+
def update(incoming_sid, opts)
|
27
|
+
Twilio.post("/IncomingPhoneNumbers/#{incoming_sid}", :body => opts)
|
28
|
+
end
|
29
|
+
|
26
30
|
def delete(incoming_sid)
|
27
31
|
Twilio.delete("/IncomingPhoneNumbers/#{incoming_sid}")
|
28
32
|
end
|
data/lib/twilio/verb.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'builder'
|
2
|
+
|
1
3
|
module Twilio
|
2
4
|
# Twilio Verbs enable your application to respond to Twilio requests (to your app) with XML responses.
|
3
5
|
# There are 5 primary verbs (say, play, gather, record, dial) and 3 secondary (hangup, pause, redirect).
|
@@ -363,7 +365,7 @@ module Twilio
|
|
363
365
|
# Twilio::Verb.reject
|
364
366
|
#
|
365
367
|
# If reject is called with an argument:
|
366
|
-
#
|
368
|
+
#
|
367
369
|
# Twilio::Verb.reject :reason => "busy"
|
368
370
|
#
|
369
371
|
def reject options = {}
|
data/lib/twilio/version.rb
CHANGED
@@ -1,42 +1,42 @@
|
|
1
1
|
play_mp3:
|
2
2
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Play loop="1">http://foo.com/cowbell.mp3</Play></Response>
|
3
|
-
|
3
|
+
|
4
4
|
play_mp3_two_times:
|
5
5
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Play loop="2">http://foo.com/cowbell.mp3</Play></Response>
|
6
6
|
|
7
7
|
play_mp3_two_times_with_pause:
|
8
8
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Play>http://foo.com/cowbell.mp3</Play><Pause/><Play>http://foo.com/cowbell.mp3</Play></Response>
|
9
|
-
|
9
|
+
|
10
10
|
gather:
|
11
11
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather/></Response>
|
12
12
|
|
13
13
|
gather_with_action:
|
14
14
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather action="http://foobar.com"/></Response>
|
15
|
-
|
15
|
+
|
16
16
|
gather_with_get_method:
|
17
17
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather method="GET"/></Response>
|
18
|
-
|
18
|
+
|
19
19
|
gather_with_timeout:
|
20
20
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather timeout="10"/></Response>
|
21
|
-
|
21
|
+
|
22
22
|
gather_with_finish_key:
|
23
23
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather finishOnKey="*"/></Response>
|
24
|
-
|
24
|
+
|
25
25
|
gather_with_num_digits:
|
26
26
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Gather numDigits="5"/></Response>
|
27
|
-
|
27
|
+
|
28
28
|
record:
|
29
|
-
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record
|
30
|
-
|
29
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record/></Response>
|
30
|
+
|
31
31
|
record_with_action:
|
32
32
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record action="http://foobar.com"/></Response>
|
33
|
-
|
33
|
+
|
34
34
|
record_with_get_method:
|
35
35
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record method="GET"/></Response>
|
36
|
-
|
36
|
+
|
37
37
|
record_with_timeout:
|
38
38
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record timeout="10"/></Response>
|
39
|
-
|
39
|
+
|
40
40
|
record_with_finish_key:
|
41
41
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Record finishOnKey="*"/></Response>
|
42
42
|
|
@@ -45,30 +45,30 @@ record_with_max_length:
|
|
45
45
|
|
46
46
|
dial:
|
47
47
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial>415-123-4567</Dial></Response>
|
48
|
-
|
48
|
+
|
49
49
|
dial_with_action:
|
50
50
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial action="http://foobar.com">415-123-4567</Dial></Response>
|
51
|
-
|
51
|
+
|
52
52
|
dial_with_get_method:
|
53
53
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial method="GET">415-123-4567</Dial></Response>
|
54
|
-
|
54
|
+
|
55
55
|
dial_with_timeout:
|
56
56
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial timeout="10">415-123-4567</Dial></Response>
|
57
|
-
|
57
|
+
|
58
58
|
dial_with_hangup_on_star:
|
59
59
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial hangupOnStar="true">415-123-4567</Dial></Response>
|
60
|
-
|
60
|
+
|
61
61
|
dial_with_time_limit:
|
62
62
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial timeLimit="3600">415-123-4567</Dial></Response>
|
63
|
-
|
63
|
+
|
64
64
|
dial_with_caller_id:
|
65
65
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial callerId="858-987-6543">415-123-4567</Dial></Response>
|
66
|
-
|
66
|
+
|
67
67
|
dial_with_redirect:
|
68
68
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial>415-123-4567</Dial><Redirect>http://www.foo.com/nextInstructions</Redirect></Response>
|
69
69
|
|
70
70
|
dial_with_number_and_send_digits:
|
71
|
-
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number sendDigits="wwww1928">415-123-4567</Number></Dial></Response>
|
71
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number sendDigits="wwww1928">415-123-4567</Number></Dial></Response>
|
72
72
|
|
73
73
|
dial_multiple_numbers:
|
74
74
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number>415-123-4567</Number><Number>415-123-4568</Number><Number>415-123-4569</Number></Dial></Response>
|
@@ -78,9 +78,9 @@ dial_conference:
|
|
78
78
|
|
79
79
|
dial_muted_conference:
|
80
80
|
response: <?xml version="1.0" encoding="UTF-8"?><Response><Dial><Conference mute="true">MyRoom</Conference></Dial></Response>
|
81
|
-
|
81
|
+
|
82
82
|
hangup:
|
83
|
-
response: <?xml version="1.0" encoding="UTF-8"?><Response><Hangup/></Response>
|
83
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Hangup/></Response>
|
84
84
|
|
85
85
|
reject:
|
86
|
-
response: <?xml version="1.0" encoding="UTF-8"?><Response><Reject/></Response>
|
86
|
+
response: <?xml version="1.0" encoding="UTF-8"?><Response><Reject/></Response>
|
@@ -1,35 +1,35 @@
|
|
1
1
|
module TwilioHelpers #:nodoc:
|
2
|
-
|
3
|
-
def stub_http_request(http_method, fixture_name, *opts)
|
2
|
+
|
3
|
+
def stub_http_request(http_method, fixture_name, *opts)
|
4
4
|
if opts
|
5
5
|
request_options = opts.pop if opts.last.is_a?(Hash)
|
6
6
|
resource = opts.pop
|
7
7
|
end
|
8
|
-
|
9
|
-
fake_response = fixture(fixture_name)
|
8
|
+
|
9
|
+
fake_response = fixture(fixture_name)
|
10
10
|
url = twilio_url(resource)
|
11
|
-
|
11
|
+
|
12
12
|
if request_options
|
13
13
|
stub_request(http_method, url).with(request_options).to_return(:body => fake_response)
|
14
14
|
else
|
15
15
|
stub_request(http_method, url).to_return(:body => fake_response)
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
return fake_response, url
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def stub_get(fixture, *opts)
|
22
|
-
stub_http_request(:get, fixture, *opts)
|
22
|
+
stub_http_request(:get, fixture, *opts)
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def stub_post(fixture, *opts)
|
26
26
|
stub_http_request(:post, fixture, *opts)
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def stub_put(fixture, *opts)
|
30
30
|
stub_http_request(:put, fixture, *opts)
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def stub_delete(fixture, *opts)
|
34
34
|
stub_http_request(:delete, fixture, *opts)
|
35
35
|
end
|
@@ -38,9 +38,9 @@ module TwilioHelpers #:nodoc:
|
|
38
38
|
path = File.join(File.dirname(__FILE__), "../fixtures/yml/verb_responses.yml")
|
39
39
|
YAML.load_file(path)[verb.to_s]['response']
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
private
|
43
|
-
|
43
|
+
|
44
44
|
def twilio_url(url=nil)
|
45
45
|
"https://mysid:mytoken@api.twilio.com:443/2010-04-01/Accounts/mysid#{'/' + url if url}"
|
46
46
|
end
|
data/spec/twilio/account_spec.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'Account' do
|
3
|
+
describe 'Account' do
|
4
4
|
before(:all) do
|
5
5
|
Twilio.connect('mysid', 'mytoken')
|
6
6
|
end
|
7
|
-
|
8
|
-
it "gets an account" do
|
7
|
+
|
8
|
+
it "gets an account" do
|
9
9
|
response, url = stub_get(:account)
|
10
|
-
|
11
|
-
Twilio::Account.get.should
|
10
|
+
|
11
|
+
Twilio::Account.get.should eql response
|
12
12
|
WebMock.should have_requested(:get, twilio_url)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it "updates name" do
|
16
16
|
response, url = stub_put(:account_renamed)
|
17
|
-
|
18
|
-
Twilio::Account.update_name('Bubba').should
|
17
|
+
|
18
|
+
Twilio::Account.update_name('Bubba').should eql response
|
19
19
|
WebMock.should have_requested(:put, twilio_url).with(:body => {:FriendlyName => 'Bubba'})
|
20
20
|
end
|
21
21
|
end
|
@@ -1,52 +1,52 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "Available Phone Numbers" do
|
3
|
+
describe "Available Phone Numbers" do
|
4
4
|
before(:all) do
|
5
5
|
Twilio.connect('mysid', 'mytoken')
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
context "Local Number" do
|
9
|
-
it "is searchable" do
|
9
|
+
it "is searchable" do
|
10
10
|
response, url = stub_get(:available_phone_numbers_local, 'AvailablePhoneNumbers/US/Local')
|
11
|
-
|
12
|
-
Twilio::AvailablePhoneNumbers.search_local.should
|
11
|
+
|
12
|
+
Twilio::AvailablePhoneNumbers.search_local.should eql response
|
13
13
|
WebMock.should have_requested(:get, url)
|
14
14
|
end
|
15
|
-
|
16
|
-
it "is searchable by area code" do
|
15
|
+
|
16
|
+
it "is searchable by area code" do
|
17
17
|
response, url = stub_get(:available_phone_numbers_local_search, 'AvailablePhoneNumbers/US/Local?AreaCode=510')
|
18
|
-
|
19
|
-
Twilio::AvailablePhoneNumbers.search_local(:area_code => 510).should
|
18
|
+
|
19
|
+
Twilio::AvailablePhoneNumbers.search_local(:area_code => 510).should eql response
|
20
20
|
WebMock.should have_requested(:get, url)
|
21
21
|
end
|
22
|
-
|
23
|
-
it "is searchable by postal code" do
|
22
|
+
|
23
|
+
it "is searchable by postal code" do
|
24
24
|
response, url = stub_get(:available_phone_numbers_local_search, 'AvailablePhoneNumbers/US/Local?InPostalCode=94612')
|
25
|
-
|
26
|
-
Twilio::AvailablePhoneNumbers.search_local(:postal_code => 94612).should
|
25
|
+
|
26
|
+
Twilio::AvailablePhoneNumbers.search_local(:postal_code => 94612).should eql response
|
27
27
|
WebMock.should have_requested(:get, url)
|
28
28
|
end
|
29
|
-
|
30
|
-
it "is searchable using multiple parameters" do
|
31
|
-
response, url = stub_get(:available_phone_numbers_local_search, 'AvailablePhoneNumbers/US/Local?NearLatLong=37.806940%2C-122.270360&InRateCenter=OKLD0349T&NearNumber=15105551213&Distance=50&InRegion=CA&InLata=722&Contains=510555
|
32
|
-
|
33
|
-
Twilio::AvailablePhoneNumbers.search_local(:in_region => 'CA', :contains => '510555****', :near_lat_long => '37.806940,-122.270360', :near_number => '15105551213', :in_lata => 722, :in_rate_center => 'OKLD0349T', :distance => 50).should
|
29
|
+
|
30
|
+
it "is searchable using multiple parameters" do
|
31
|
+
response, url = stub_get(:available_phone_numbers_local_search, 'AvailablePhoneNumbers/US/Local?NearLatLong=37.806940%2C-122.270360&InRateCenter=OKLD0349T&NearNumber=15105551213&Distance=50&InRegion=CA&InLata=722&Contains=510555****&Page=2&PageSize=30')
|
32
|
+
|
33
|
+
Twilio::AvailablePhoneNumbers.search_local(:in_region => 'CA', :contains => '510555****', :near_lat_long => '37.806940,-122.270360', :near_number => '15105551213', :in_lata => 722, :in_rate_center => 'OKLD0349T', :distance => 50, :page => 2, :page_size => 30).should eql response
|
34
34
|
WebMock.should have_requested(:get, url)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
context "Toll-free Number" do
|
39
|
-
it "is searchable" do
|
39
|
+
it "is searchable" do
|
40
40
|
response, url = stub_get(:available_phone_numbers_toll_free, 'AvailablePhoneNumbers/US/TollFree')
|
41
|
-
|
42
|
-
Twilio::AvailablePhoneNumbers.search_toll_free.should
|
41
|
+
|
42
|
+
Twilio::AvailablePhoneNumbers.search_toll_free.should eql response
|
43
43
|
WebMock.should have_requested(:get, url)
|
44
44
|
end
|
45
|
-
|
46
|
-
it "is searchable as a vanity number" do
|
45
|
+
|
46
|
+
it "is searchable as a vanity number" do
|
47
47
|
response, url = stub_get(:available_phone_numbers_toll_free_search, 'AvailablePhoneNumbers/US/TollFree?Contains=STORM')
|
48
|
-
|
49
|
-
Twilio::AvailablePhoneNumbers.search_toll_free(:contains => 'STORM').should
|
48
|
+
|
49
|
+
Twilio::AvailablePhoneNumbers.search_toll_free(:contains => 'STORM').should eql response
|
50
50
|
WebMock.should have_requested(:get, url)
|
51
51
|
end
|
52
52
|
end
|
data/spec/twilio/call_spec.rb
CHANGED
@@ -5,60 +5,60 @@ describe "Call" do
|
|
5
5
|
Twilio.connect('mysid', 'mytoken')
|
6
6
|
@call_sid = 'CA42ed11f93dc08b952027ffbc406d0868'
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "can be made" do
|
10
10
|
response, url = stub_post(:call_new, 'Calls')
|
11
|
-
|
12
|
-
Twilio::Call.make('4158675309', '4155551212', 'http://localhost:3000/call_handler').should
|
11
|
+
|
12
|
+
Twilio::Call.make('4158675309', '4155551212', 'http://localhost:3000/call_handler').should eql response
|
13
13
|
WebMock.should have_requested(:post, url)
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "can be redirected" do
|
17
17
|
response, url = stub_post(:call_redirected, "Calls/#{@call_sid}")
|
18
|
-
|
19
|
-
Twilio::Call.redirect(@call_sid, 'http://localhost:3000/redirect_handler').should
|
18
|
+
|
19
|
+
Twilio::Call.redirect(@call_sid, 'http://localhost:3000/redirect_handler').should eql response
|
20
20
|
WebMock.should have_requested(:post, url)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "gets a list of calls" do
|
24
24
|
response, url = stub_get(:calls, 'Calls')
|
25
|
-
|
26
|
-
Twilio::Call.list.should
|
25
|
+
|
26
|
+
Twilio::Call.list.should eql response
|
27
27
|
WebMock.should have_requested(:get, url)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "gets a specific call" do
|
31
31
|
response, url = stub_get(:calls, "Calls/#{@call_sid}")
|
32
|
-
|
33
|
-
Twilio::Call.get(@call_sid).should
|
32
|
+
|
33
|
+
Twilio::Call.get(@call_sid).should eql response
|
34
34
|
WebMock.should have_requested(:get, url)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "gets a list of call segments" do
|
38
38
|
response, url = stub_get(:calls, "Calls/#{@call_sid}/Segments")
|
39
|
-
|
40
|
-
Twilio::Call.segments(@call_sid).should
|
39
|
+
|
40
|
+
Twilio::Call.segments(@call_sid).should eql response
|
41
41
|
WebMock.should have_requested(:get, url)
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
it "gets a specific call segment" do
|
45
45
|
response, url = stub_get(:calls, "Calls/#{@call_sid}/Segments/abc123")
|
46
|
-
|
47
|
-
Twilio::Call.segments(@call_sid, 'abc123').should
|
46
|
+
|
47
|
+
Twilio::Call.segments(@call_sid, 'abc123').should eql response
|
48
48
|
WebMock.should have_requested(:get, url)
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
it "gets a list of call recordings" do
|
52
52
|
response, url = stub_get(:recordings, "Calls/#{@call_sid}/Recordings")
|
53
|
-
|
54
|
-
Twilio::Call.recordings(@call_sid).should
|
53
|
+
|
54
|
+
Twilio::Call.recordings(@call_sid).should eql response
|
55
55
|
WebMock.should have_requested(:get, url)
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
it "gets a list of call notifications" do
|
59
59
|
response, url = stub_get(:notifications, "Calls/#{@call_sid}/Notifications")
|
60
|
-
|
61
|
-
Twilio::Call.notifications(@call_sid).should
|
60
|
+
|
61
|
+
Twilio::Call.notifications(@call_sid).should eql response
|
62
62
|
WebMock.should have_requested(:get, url)
|
63
63
|
end
|
64
64
|
end
|
@@ -6,53 +6,53 @@ describe "Conference" do
|
|
6
6
|
@conference_sid = 'CF9f2ead1ae43cdabeab102fa30d938378'
|
7
7
|
@call_sid = 'CA9ae8e040497c0598481c2031a154919e'
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "gets a list of conferences" do
|
11
11
|
response, url = stub_get(:conferences, 'Conferences')
|
12
|
-
|
13
|
-
Twilio::Conference.list.should
|
12
|
+
|
13
|
+
Twilio::Conference.list.should eql response
|
14
14
|
WebMock.should have_requested(:get, url)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "gets a specific conference" do
|
18
18
|
response, url = stub_get(:conference, "Conferences/#{@conference_sid}")
|
19
|
-
|
20
|
-
Twilio::Conference.get(@conference_sid).should
|
19
|
+
|
20
|
+
Twilio::Conference.get(@conference_sid).should eql response
|
21
21
|
WebMock.should have_requested(:get, url)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "gets a list of participants" do
|
25
25
|
response, url = stub_get(:conference_participants, "Conferences/#{@conference_sid}/Participants")
|
26
|
-
|
27
|
-
Twilio::Conference.participants(@conference_sid).should
|
26
|
+
|
27
|
+
Twilio::Conference.participants(@conference_sid).should eql response
|
28
28
|
WebMock.should have_requested(:get, url)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "gets a specific participant" do
|
32
32
|
response, url = stub_get(:conference_participant, "Conferences/#{@conference_sid}/Participants/#{@call_sid}")
|
33
|
-
|
34
|
-
Twilio::Conference.participant(@conference_sid, @call_sid).should
|
33
|
+
|
34
|
+
Twilio::Conference.participant(@conference_sid, @call_sid).should eql response
|
35
35
|
WebMock.should have_requested(:get, url)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "can mute a particant" do
|
39
39
|
response, url = stub_post(:conference_participant_muted, "Conferences/#{@conference_sid}/Participants/#{@call_sid}", :body => 'Muted=true')
|
40
|
-
|
41
|
-
Twilio::Conference.mute_participant(@conference_sid, @call_sid).should
|
40
|
+
|
41
|
+
Twilio::Conference.mute_participant(@conference_sid, @call_sid).should eql response
|
42
42
|
WebMock.should have_requested(:post, url)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "can unmute a participant" do
|
46
46
|
response, url = stub_post(:conference_participant, "Conferences/#{@conference_sid}/Participants/#{@call_sid}", :body => 'Muted=false')
|
47
|
-
|
48
|
-
Twilio::Conference.unmute_participant(@conference_sid, @call_sid).should
|
47
|
+
|
48
|
+
Twilio::Conference.unmute_participant(@conference_sid, @call_sid).should eql response
|
49
49
|
WebMock.should have_requested(:post, url)
|
50
50
|
end
|
51
51
|
|
52
52
|
it "can be kicked" do
|
53
53
|
response, url = stub_delete(:conference_participant, "Conferences/#{@conference_sid}/Participants/#{@call_sid}")
|
54
|
-
|
55
|
-
Twilio::Conference.kick_participant(@conference_sid, @call_sid).should
|
54
|
+
|
55
|
+
Twilio::Conference.kick_participant(@conference_sid, @call_sid).should eql response
|
56
56
|
WebMock.should have_requested(:delete, url)
|
57
57
|
end
|
58
58
|
end
|
@@ -5,38 +5,38 @@ describe "Incoming Phone Number" do
|
|
5
5
|
Twilio.connect('mysid', 'mytoken')
|
6
6
|
@incoming_sid = 'PNe536dfda7c6184afab78d980cb8cdf43'
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "gets a specific phone number" do
|
10
10
|
response, url = stub_get(:incoming_phone_number, "IncomingPhoneNumbers/#{@incoming_sid}")
|
11
|
-
|
12
|
-
Twilio::IncomingPhoneNumber.get(@incoming_sid).should
|
11
|
+
|
12
|
+
Twilio::IncomingPhoneNumber.get(@incoming_sid).should eql response
|
13
13
|
WebMock.should have_requested(:get, url)
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "gets a list of phone numbers" do
|
17
17
|
response, url = stub_get(:incoming_phone_numbers, 'IncomingPhoneNumbers')
|
18
|
-
|
19
|
-
Twilio::IncomingPhoneNumber.list.should
|
18
|
+
|
19
|
+
Twilio::IncomingPhoneNumber.list.should eql response
|
20
20
|
WebMock.should have_requested(:get, url)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
context "creating" do
|
24
24
|
it "is created" do
|
25
25
|
response, url = stub_post(:incoming_phone_number, 'IncomingPhoneNumbers')
|
26
26
|
|
27
|
-
Twilio::IncomingPhoneNumber.create(:PhoneNumber => '8055551212').should
|
27
|
+
Twilio::IncomingPhoneNumber.create(:PhoneNumber => '8055551212').should eql response
|
28
28
|
WebMock.should have_requested(:post, url)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "raises an exception if PhoneNumber or AreaCode are not set" do
|
32
32
|
expect { Twilio::IncomingPhoneNumber.create(:FriendlyName => 'Booyah') }.to raise_exception
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
it "is deleted" do
|
37
37
|
response, url = stub_delete(:incoming_phone_number, "IncomingPhoneNumbers/#{@incoming_sid}")
|
38
|
-
|
39
|
-
Twilio::IncomingPhoneNumber.delete(@incoming_sid).should
|
38
|
+
|
39
|
+
Twilio::IncomingPhoneNumber.delete(@incoming_sid).should eql response
|
40
40
|
WebMock.should have_requested(:delete, url)
|
41
41
|
end
|
42
42
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
# uncomment and add your own tests here
|
4
|
-
=begin
|
4
|
+
=begin
|
5
5
|
describe "testing with a live connection" do
|
6
6
|
before(:all) do
|
7
7
|
WebMock.allow_net_connect!
|
@@ -9,11 +9,11 @@ describe "testing with a live connection" do
|
|
9
9
|
@token = '123'
|
10
10
|
Twilio.connect(@sid, @token)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
after(:all) do
|
14
14
|
WebMock.disable_net_connect!
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "gets real account" do
|
18
18
|
Twilio::Account.get.should include("TwilioResponse")
|
19
19
|
end
|
@@ -8,22 +8,22 @@ describe "Notification" do
|
|
8
8
|
|
9
9
|
it "gets a list of notifications" do
|
10
10
|
response, url = stub_get(:notifications, 'Notifications')
|
11
|
-
|
12
|
-
Twilio::Notification.list.should
|
11
|
+
|
12
|
+
Twilio::Notification.list.should eql response
|
13
13
|
WebMock.should have_requested(:get, url)
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "gets a specific notification" do
|
17
17
|
response, url = stub_get(:notification, "Notifications/#{@notification_sid}")
|
18
|
-
|
19
|
-
Twilio::Notification.get(@notification_sid).should
|
18
|
+
|
19
|
+
Twilio::Notification.get(@notification_sid).should eql response
|
20
20
|
WebMock.should have_requested(:get, url)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "is deleted" do
|
24
24
|
response, url = stub_delete(:notification, "Notifications/#{@notification_sid}")
|
25
|
-
|
26
|
-
Twilio::Notification.delete(@notification_sid).should
|
25
|
+
|
26
|
+
Twilio::Notification.delete(@notification_sid).should eql response
|
27
27
|
WebMock.should have_requested(:delete, url)
|
28
28
|
end
|
29
29
|
end
|
@@ -5,39 +5,39 @@ describe "Outgoing Caller ID" do
|
|
5
5
|
Twilio.connect('mysid', 'mytoken')
|
6
6
|
@callerid_sid = 'PNe536dfda7c6184afab78d980cb8cdf43'
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "gets a list of caller id's" do
|
10
10
|
response, url = stub_get(:outgoing_caller_ids, 'OutgoingCallerIds')
|
11
|
-
|
12
|
-
Twilio::OutgoingCallerId.list.should
|
11
|
+
|
12
|
+
Twilio::OutgoingCallerId.list.should eql response
|
13
13
|
WebMock.should have_requested(:get, url)
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "gets a specific caller id" do
|
17
17
|
response, url = stub_get(:outgoing_caller_id, "OutgoingCallerIds/#{@callerid_sid}")
|
18
|
-
|
19
|
-
Twilio::OutgoingCallerId.get(@callerid_sid).should
|
18
|
+
|
19
|
+
Twilio::OutgoingCallerId.get(@callerid_sid).should eql response
|
20
20
|
WebMock.should have_requested(:get, url)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "is created" do
|
24
24
|
response, url = stub_post(:outgoing_caller_id_new, 'OutgoingCallerIds')
|
25
|
-
|
26
|
-
Twilio::OutgoingCallerId.create('4158675309', 'My Home Phone').should
|
25
|
+
|
26
|
+
Twilio::OutgoingCallerId.create('4158675309', 'My Home Phone').should eql response
|
27
27
|
WebMock.should have_requested(:post, url)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "is deleted" do
|
31
31
|
response, url = stub_delete(:outgoing_caller_id, "OutgoingCallerIds/#{@callerid_sid}")
|
32
|
-
|
33
|
-
Twilio::OutgoingCallerId.delete(@callerid_sid).should
|
32
|
+
|
33
|
+
Twilio::OutgoingCallerId.delete(@callerid_sid).should eql response
|
34
34
|
WebMock.should have_requested(:delete, url)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "updates name" do
|
38
38
|
response, url = stub_put(:outgoing_caller_id, "OutgoingCallerIds/#{@callerid_sid}")
|
39
|
-
|
40
|
-
Twilio::OutgoingCallerId.update_name(@callerid_sid, 'My office line').should
|
39
|
+
|
40
|
+
Twilio::OutgoingCallerId.update_name(@callerid_sid, 'My office line').should eql response
|
41
41
|
WebMock.should have_requested(:put, url)
|
42
42
|
end
|
43
43
|
end
|
@@ -6,39 +6,39 @@ describe "Recording" do
|
|
6
6
|
@recording_sid = 'RE41331862605f3d662488fdafda2e175f'
|
7
7
|
@transcription_sid = 'TRbdece5b75f2cd8f6ef38e0a10f5c4447'
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "gets a list of recordings" do
|
11
11
|
response, url = stub_get(:recordings, 'Recordings')
|
12
|
-
|
13
|
-
Twilio::Recording.list.should
|
12
|
+
|
13
|
+
Twilio::Recording.list.should eql response
|
14
14
|
WebMock.should have_requested(:get, url)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "gets a specific recording" do
|
18
18
|
response, url = stub_get(:recording, "Recordings/#{@recording_sid}")
|
19
|
-
|
20
|
-
Twilio::Recording.get(@recording_sid).should
|
19
|
+
|
20
|
+
Twilio::Recording.get(@recording_sid).should eql response
|
21
21
|
WebMock.should have_requested(:get, url)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "is deleted" do
|
25
25
|
response, url = stub_delete(:recording, "Recordings/#{@recording_sid}")
|
26
|
-
|
27
|
-
Twilio::Recording.delete(@recording_sid).should
|
26
|
+
|
27
|
+
Twilio::Recording.delete(@recording_sid).should eql response
|
28
28
|
WebMock.should have_requested(:delete, url)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "gets a list of transcriptions" do
|
32
32
|
response, url = stub_get(:transcriptions, "Recordings/#{@recording_sid}/Transcriptions")
|
33
|
-
|
34
|
-
Twilio::Recording.transcriptions(@recording_sid).should
|
33
|
+
|
34
|
+
Twilio::Recording.transcriptions(@recording_sid).should eql response
|
35
35
|
WebMock.should have_requested(:get, url)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "gets a specific transcription" do
|
39
39
|
response, url = stub_get(:transcriptions, "Recordings/#{@recording_sid}/Transcriptions/#{@transcription_sid}")
|
40
|
-
|
41
|
-
Twilio::Recording.transcriptions(@recording_sid, @transcription_sid).should
|
40
|
+
|
41
|
+
Twilio::Recording.transcriptions(@recording_sid, @transcription_sid).should eql response
|
42
42
|
WebMock.should have_requested(:get, url)
|
43
43
|
end
|
44
44
|
end
|
data/spec/twilio/sms_spec.rb
CHANGED
@@ -5,32 +5,32 @@ describe "SMS" do
|
|
5
5
|
Twilio.connect('mysid', 'mytoken')
|
6
6
|
@sms_sid = 'SM872fb94e3b358913777cdb313f25b46f'
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "gets a list of SMS messages" do
|
10
10
|
response, url = stub_get(:sms_messages, 'SMS/Messages')
|
11
|
-
|
12
|
-
Twilio::Sms.list.should
|
11
|
+
|
12
|
+
Twilio::Sms.list.should eql response
|
13
13
|
WebMock.should have_requested(:get, url)
|
14
14
|
end
|
15
15
|
|
16
16
|
it "gets a specific SMS message" do
|
17
17
|
response, url = stub_get(:sms, "SMS/Messages/#{@sms_sid}")
|
18
|
-
|
19
|
-
Twilio::Sms.get(@sms_sid).should
|
18
|
+
|
19
|
+
Twilio::Sms.get(@sms_sid).should eql response
|
20
20
|
WebMock.should have_requested(:get, url)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "is created" do
|
24
24
|
response, url = stub_post(:sms_new, "SMS/Messages")
|
25
|
-
|
26
|
-
Twilio::Sms.message('4155551212', '5558675309', 'Hi Jenny! Want to grab dinner?').should
|
25
|
+
|
26
|
+
Twilio::Sms.message('4155551212', '5558675309', 'Hi Jenny! Want to grab dinner?').should eql response
|
27
27
|
WebMock.should have_requested(:post, url)
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "is created with a callback URL" do
|
31
31
|
response, url = stub_post(:sms_new_with_callback, "SMS/Messages")
|
32
|
-
|
33
|
-
Twilio::Sms.message('4155551212', '5558675309', 'Hi Jenny! Want to grab dinner?', 'http://example.com/callback').should
|
32
|
+
|
33
|
+
Twilio::Sms.message('4155551212', '5558675309', 'Hi Jenny! Want to grab dinner?', 'http://example.com/callback').should eql response
|
34
34
|
WebMock.should have_requested(:post, url)
|
35
35
|
end
|
36
36
|
end
|
data/spec/twilio/verb_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Verb" do
|
4
|
-
|
4
|
+
|
5
5
|
context "Say" do
|
6
6
|
it "says 'hi'" do
|
7
7
|
Twilio::Verb.say('hi').should match %r{<Say( loop="1"| language="en"| voice="man"){3}>hi</Say>}
|
@@ -28,7 +28,7 @@ describe "Verb" do
|
|
28
28
|
v.say 'hi', :loop => 1
|
29
29
|
v.pause
|
30
30
|
v.say 'bye'
|
31
|
-
}.response.should match %r{<Say( loop="1"| language="en"| voice="man"){3}>hi</Say><Pause
|
31
|
+
}.response.should match %r{<Say( loop="1"| language="en"| voice="man"){3}>hi</Say><Pause/><Say( loop="1"| language="en"| voice="man"){3}>bye</Say>}
|
32
32
|
end
|
33
33
|
|
34
34
|
it "says 'hi' with 2 second pause and say 'bye'" do
|
@@ -37,9 +37,9 @@ describe "Verb" do
|
|
37
37
|
v.pause :length => 2
|
38
38
|
v.say 'bye'
|
39
39
|
}.response.should match %r{<Say( loop="1"| language="en"| voice="man"){3}>hi</Say><Pause length="2"/><Say( loop="1"| language="en"| voice="man"){3}>bye</Say>}
|
40
|
-
end
|
40
|
+
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
context "Play" do
|
44
44
|
it "plays mp3 response" do
|
45
45
|
Twilio::Verb.play('http://foo.com/cowbell.mp3').should == verb_response(:play_mp3)
|
@@ -53,7 +53,7 @@ describe "Verb" do
|
|
53
53
|
Twilio::Verb.play('http://foo.com/cowbell.mp3', :loop => 2, :pause => true).should == verb_response(:play_mp3_two_times_with_pause)
|
54
54
|
end
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
context "Gather" do
|
58
58
|
it "gathers" do
|
59
59
|
Twilio::Verb.gather.should == verb_response(:gather)
|
@@ -210,7 +210,7 @@ describe "Verb" do
|
|
210
210
|
}.response.should == verb_response(:dial_muted_conference)
|
211
211
|
end
|
212
212
|
end
|
213
|
-
|
213
|
+
|
214
214
|
context "Hang Up" do
|
215
215
|
it "hangs up" do
|
216
216
|
Twilio::Verb.hangup.should == verb_response(:hangup)
|
@@ -223,7 +223,7 @@ describe "Verb" do
|
|
223
223
|
}.response.should match %r{<Say( loop="1"| language="en"| voice="man"){3}>hi</Say><Hangup/>}
|
224
224
|
end
|
225
225
|
end
|
226
|
-
|
226
|
+
|
227
227
|
context "Reject" do
|
228
228
|
it "rejects" do
|
229
229
|
Twilio::Verb.reject.should == verb_response(:reject)
|
@@ -241,7 +241,7 @@ describe "Verb" do
|
|
241
241
|
}.response.should match %r{<Reject reason="busy"/>}
|
242
242
|
end
|
243
243
|
end
|
244
|
-
|
244
|
+
|
245
245
|
context "SMS" do
|
246
246
|
it "sends a simple SMS message" do
|
247
247
|
verb = Twilio::Verb.new { |v|
|
data/twilio.gemspec
CHANGED
@@ -20,11 +20,11 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
22
|
s.add_dependency "builder", ">= 2.1.2"
|
23
|
-
s.add_dependency "httparty", "
|
23
|
+
s.add_dependency "httparty", ">= 0.8"
|
24
24
|
|
25
25
|
{
|
26
26
|
'rake' => '~> 0.8.7',
|
27
|
-
'rspec' => '~> 2.
|
27
|
+
'rspec' => '~> 2.12',
|
28
28
|
'webmock' => '~> 1.6.2'
|
29
29
|
}.each { |l, v| s. add_development_dependency l, v }
|
30
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twilio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -15,11 +15,11 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date:
|
18
|
+
date: 2013-01-12 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: builder
|
22
|
-
requirement:
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
25
|
- - ! '>='
|
@@ -27,21 +27,31 @@ dependencies:
|
|
27
27
|
version: 2.1.2
|
28
28
|
type: :runtime
|
29
29
|
prerelease: false
|
30
|
-
version_requirements:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 2.1.2
|
31
36
|
- !ruby/object:Gem::Dependency
|
32
37
|
name: httparty
|
33
|
-
requirement:
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
34
39
|
none: false
|
35
40
|
requirements:
|
36
|
-
- -
|
41
|
+
- - ! '>='
|
37
42
|
- !ruby/object:Gem::Version
|
38
43
|
version: '0.8'
|
39
44
|
type: :runtime
|
40
45
|
prerelease: false
|
41
|
-
version_requirements:
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0.8'
|
42
52
|
- !ruby/object:Gem::Dependency
|
43
53
|
name: rake
|
44
|
-
requirement:
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
45
55
|
none: false
|
46
56
|
requirements:
|
47
57
|
- - ~>
|
@@ -49,21 +59,31 @@ dependencies:
|
|
49
59
|
version: 0.8.7
|
50
60
|
type: :development
|
51
61
|
prerelease: false
|
52
|
-
version_requirements:
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.8.7
|
53
68
|
- !ruby/object:Gem::Dependency
|
54
69
|
name: rspec
|
55
|
-
requirement:
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
56
71
|
none: false
|
57
72
|
requirements:
|
58
73
|
- - ~>
|
59
74
|
- !ruby/object:Gem::Version
|
60
|
-
version: 2.
|
75
|
+
version: '2.12'
|
61
76
|
type: :development
|
62
77
|
prerelease: false
|
63
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '2.12'
|
64
84
|
- !ruby/object:Gem::Dependency
|
65
85
|
name: webmock
|
66
|
-
requirement:
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
67
87
|
none: false
|
68
88
|
requirements:
|
69
89
|
- - ~>
|
@@ -71,7 +91,12 @@ dependencies:
|
|
71
91
|
version: 1.6.2
|
72
92
|
type: :development
|
73
93
|
prerelease: false
|
74
|
-
version_requirements:
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.6.2
|
75
100
|
description: Twilio API wrapper
|
76
101
|
email:
|
77
102
|
- github@webficient.com
|
@@ -157,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
157
182
|
version: '0'
|
158
183
|
segments:
|
159
184
|
- 0
|
160
|
-
hash:
|
185
|
+
hash: 2539554735793806744
|
161
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
187
|
none: false
|
163
188
|
requirements:
|
@@ -166,10 +191,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
191
|
version: '0'
|
167
192
|
segments:
|
168
193
|
- 0
|
169
|
-
hash:
|
194
|
+
hash: 2539554735793806744
|
170
195
|
requirements: []
|
171
196
|
rubyforge_project: twilio
|
172
|
-
rubygems_version: 1.8.
|
197
|
+
rubygems_version: 1.8.24
|
173
198
|
signing_key:
|
174
199
|
specification_version: 3
|
175
200
|
summary: Twilio API Client
|