twilio 3.1.0 → 3.1.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/.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
|