twilio-ruby 3.14.3 → 3.14.4
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 +4 -4
- data/CHANGES.md +9 -0
- data/docs/usage/token-generation.rst +1 -1
- data/docs/usage/validation.rst +10 -0
- data/lib/rack/twilio_webhook_authentication.rb +5 -2
- data/lib/twilio-ruby/rest/sms/messages.rb +24 -0
- data/lib/twilio-ruby/version.rb +1 -1
- data/spec/rack/twilio_webhook_authentication_spec.rb +22 -0
- data/spec/rest/sms/message_spec.rb +37 -0
- data/spec/rest/sms/messages_spec.rb +36 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8bf4ccb567cfcec52fe35a2dcbdc00d5162f3a6
|
4
|
+
data.tar.gz: e3a045befa32f513203f22a0ceee78084b7303ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e32b334d54614e3d89c2a7403f2c661b04eff50240d2fc6bda13dcab3c85a9a978a6c6f96ac74a6f734859201f8ed6ba6deb86369870379d63f14719d8a1827f
|
7
|
+
data.tar.gz: eb0b6cea76078763094d33ec83c089d0fe252eeb984444d0d6b57277171267ea70200858e2b8ac9fd9a810d5e915743f071a7347bbc6cfbb7a8d1a640184f86f
|
data/CHANGES.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
twilio-ruby changelog
|
2
2
|
=====================
|
3
3
|
|
4
|
+
Version 3.14.4
|
5
|
+
--------------
|
6
|
+
|
7
|
+
Released January 8, 2015
|
8
|
+
|
9
|
+
- Feature: dynamically choose the auth token to validate requests with when using the TwilioWebhookAuthentication middleware.
|
10
|
+
- Deprecation: The Twilio::REST::SMS::Message resource is deprecated.
|
11
|
+
- More fixing of docs
|
12
|
+
|
4
13
|
Version 3.14.3
|
5
14
|
--------------
|
6
15
|
|
@@ -14,7 +14,7 @@ Twilio Client.
|
|
14
14
|
Capability tokens are used by `Twilio Client
|
15
15
|
<http://www.twilio.com/api/client>`_ to provide connection
|
16
16
|
security and authorization. The `Capability Token documentation
|
17
|
-
<
|
17
|
+
<https://www.twilio.com/docs/client/capability-tokens>`_ explains in depth the purpose and
|
18
18
|
features of these tokens.
|
19
19
|
|
20
20
|
:class:`Twilio::Util::Capability` is responsible for the creation of these
|
data/docs/usage/validation.rst
CHANGED
@@ -95,3 +95,13 @@ a Sinatra application:
|
|
95
95
|
Now, any POST request to /messages in your application that doesn't validate as
|
96
96
|
a Twilio request, will automatically respond with a 403 status code and your
|
97
97
|
action will not be hit.
|
98
|
+
|
99
|
+
If you use subaccounts and need to validate with different auth tokens, you can pass a block to the middleware instead of an auth token. The block will be passed the Account Sid making the call.
|
100
|
+
|
101
|
+
.. code-block:: ruby
|
102
|
+
|
103
|
+
use Rack::TwilioWebhookAuthentication, nil, /\/messages/ do |account_sid|
|
104
|
+
# lookup auth_token from account_sid
|
105
|
+
end
|
106
|
+
|
107
|
+
Ensure you pass `nil` for the auth_token when passing a block, otherwise the block will not be called.
|
@@ -17,18 +17,20 @@ module Rack
|
|
17
17
|
# doesn't validate then the middleware responds immediately with a 403 status.
|
18
18
|
|
19
19
|
class TwilioWebhookAuthentication
|
20
|
-
def initialize(app, auth_token, *paths)
|
20
|
+
def initialize(app, auth_token, *paths, &auth_token_lookup)
|
21
21
|
@app = app
|
22
22
|
@auth_token = auth_token
|
23
|
+
define_singleton_method(:get_auth_token, auth_token_lookup) if block_given?
|
23
24
|
@path_regex = Regexp.union(paths)
|
24
25
|
end
|
25
26
|
|
26
27
|
def call(env)
|
27
28
|
return @app.call(env) unless env["PATH_INFO"].match(@path_regex)
|
28
|
-
validator = Twilio::Util::RequestValidator.new(@auth_token)
|
29
29
|
request = Rack::Request.new(env)
|
30
30
|
original_url = request.url
|
31
31
|
params = request.post? ? request.POST : {}
|
32
|
+
auth_token = @auth_token || get_auth_token(params['AccountSid'])
|
33
|
+
validator = Twilio::Util::RequestValidator.new(auth_token)
|
32
34
|
signature = env['HTTP_X_TWILIO_SIGNATURE'] || ""
|
33
35
|
if validator.validate(original_url, params, signature)
|
34
36
|
@app.call(env)
|
@@ -41,4 +43,5 @@ module Rack
|
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
46
|
+
|
44
47
|
end
|
@@ -1,7 +1,26 @@
|
|
1
1
|
module Twilio
|
2
2
|
module REST
|
3
3
|
module SMS
|
4
|
+
|
5
|
+
module Deprecation
|
6
|
+
def deprecate(method_name)
|
7
|
+
old_method = "_deprecated_#{method_name}"
|
8
|
+
alias_method old_method, method_name
|
9
|
+
define_method method_name do |*args, &block|
|
10
|
+
warn "[DEPRECATED] SMS Resource is deprecated. Please use Messages (https://www.twilio.com/docs/api/rest/message)"
|
11
|
+
send old_method, *args, &block
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
4
16
|
class Messages < ListResource
|
17
|
+
extend Deprecation
|
18
|
+
|
19
|
+
deprecate :list
|
20
|
+
deprecate :total
|
21
|
+
deprecate :get
|
22
|
+
deprecate :create
|
23
|
+
|
5
24
|
def initialize(path, client)
|
6
25
|
super
|
7
26
|
@list_key = 'sms_messages'
|
@@ -9,6 +28,11 @@ module Twilio
|
|
9
28
|
end
|
10
29
|
|
11
30
|
class Message < InstanceResource
|
31
|
+
extend Deprecation
|
32
|
+
|
33
|
+
deprecate :update
|
34
|
+
deprecate :refresh
|
35
|
+
deprecate :delete
|
12
36
|
end
|
13
37
|
end
|
14
38
|
end
|
data/lib/twilio-ruby/version.rb
CHANGED
@@ -18,6 +18,28 @@ describe Rack::TwilioWebhookAuthentication do
|
|
18
18
|
Rack::TwilioWebhookAuthentication.new(@app, 'ABC', /\/voice/, /\/sms/)
|
19
19
|
}.not_to raise_error
|
20
20
|
end
|
21
|
+
|
22
|
+
it 'should initialize with an app, dynamic token and paths' do
|
23
|
+
expect {
|
24
|
+
Rack::TwilioWebhookAuthentication.new(@app, nil, /\/voice/, /\/sms/)
|
25
|
+
}.not_to raise_error
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'calling against one path with dynamic auth token' do
|
30
|
+
it 'should allow a request through if it validates' do
|
31
|
+
auth_token = 'qwerty'
|
32
|
+
account_sid = 12345
|
33
|
+
expect_any_instance_of(Rack::Request).to receive(:post?).and_return(true)
|
34
|
+
expect_any_instance_of(Rack::Request).to receive(:POST).and_return({'AccountSid' => account_sid})
|
35
|
+
@middleware = Rack::TwilioWebhookAuthentication.new(@app, nil, /\/voice/) { |asid| auth_token}
|
36
|
+
request_validator = double('RequestValidator')
|
37
|
+
expect(Twilio::Util::RequestValidator).to receive(:new).with(auth_token).and_return(request_validator)
|
38
|
+
expect(request_validator).to receive(:validate).and_return(true)
|
39
|
+
request = Rack::MockRequest.env_for('/voice')
|
40
|
+
status, headers, body = @middleware.call(request)
|
41
|
+
expect(status).to be(200)
|
42
|
+
end
|
21
43
|
end
|
22
44
|
|
23
45
|
describe 'calling against one path' do
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Twilio::REST::SMS::Message do
|
4
|
+
|
5
|
+
before do
|
6
|
+
client = double("Client")
|
7
|
+
allow(client).to receive(:post) do
|
8
|
+
{'sid' => 'qwerty' }
|
9
|
+
end
|
10
|
+
|
11
|
+
allow(client).to receive(:get) do
|
12
|
+
{'sid' => 'qwerty', 'sms_message' => [] }
|
13
|
+
end
|
14
|
+
|
15
|
+
allow(client).to receive(:delete) do
|
16
|
+
{'sid' => 'qwerty' }
|
17
|
+
end
|
18
|
+
|
19
|
+
@message = Twilio::REST::SMS::Message.new('someUri',client)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should warn of deprecation of SMS Message Update' do
|
23
|
+
expect(@message).to receive(:warn)
|
24
|
+
@message.update
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should warn of deprecation of SMS Message Refresh' do
|
28
|
+
expect(@message).to receive(:warn)
|
29
|
+
@message.refresh
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should warn of deprecation of SMS Message Delete' do
|
33
|
+
expect(@message).to receive(:warn)
|
34
|
+
@message.delete
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Twilio::REST::SMS::Messages do
|
4
|
+
|
5
|
+
before do
|
6
|
+
client = double("Client")
|
7
|
+
allow(client).to receive(:post) do
|
8
|
+
{'sid' => 'qwerty' }
|
9
|
+
end
|
10
|
+
|
11
|
+
allow(client).to receive(:get) do
|
12
|
+
{'sid' => 'qwerty', 'sms_messages' => [] }
|
13
|
+
end
|
14
|
+
@messages = Twilio::REST::SMS::Messages.new('someUri',client)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should warn of deprecation of SMS Messages Create' do
|
18
|
+
expect(@messages).to receive(:warn)
|
19
|
+
@messages.create to: "+1", from: "+2", body: "But Jenny!"
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should warn of deprecation of SMS Messages List' do
|
23
|
+
expect(@messages).to receive(:warn)
|
24
|
+
@messages.list to: "+1"
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should warn of deprecation of SMS Messages Get' do
|
28
|
+
expect(@messages).to receive(:warn)
|
29
|
+
@messages.get sid: "qwerty"
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should warn of deprecation of SMS Messages total' do
|
33
|
+
expect(@messages).to receive(:warn)
|
34
|
+
@messages.total
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twilio-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.14.
|
4
|
+
version: 3.14.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Benton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -195,6 +195,8 @@ files:
|
|
195
195
|
- spec/rest/numbers_spec.rb
|
196
196
|
- spec/rest/queue_spec.rb
|
197
197
|
- spec/rest/recording_spec.rb
|
198
|
+
- spec/rest/sms/message_spec.rb
|
199
|
+
- spec/rest/sms/messages_spec.rb
|
198
200
|
- spec/rest/token_spec.rb
|
199
201
|
- spec/rest/utils_spec.rb
|
200
202
|
- spec/spec_helper.rb
|
@@ -250,6 +252,8 @@ test_files:
|
|
250
252
|
- spec/rest/numbers_spec.rb
|
251
253
|
- spec/rest/queue_spec.rb
|
252
254
|
- spec/rest/recording_spec.rb
|
255
|
+
- spec/rest/sms/message_spec.rb
|
256
|
+
- spec/rest/sms/messages_spec.rb
|
253
257
|
- spec/rest/token_spec.rb
|
254
258
|
- spec/rest/utils_spec.rb
|
255
259
|
- spec/spec_helper.rb
|