twilio-ruby 3.1.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/twilio-ruby.rb CHANGED
@@ -7,10 +7,12 @@ require 'json'
7
7
  require 'cgi'
8
8
  require 'openssl'
9
9
  require 'base64'
10
+ require 'jwt'
10
11
 
11
12
 
12
13
  require "#{TWILIO_RUBY_ROOT}/twilio-ruby/util"
13
14
  require "#{TWILIO_RUBY_ROOT}/twilio-ruby/util/request_validator"
15
+ require "#{TWILIO_RUBY_ROOT}/twilio-ruby/util/capability"
14
16
  require "#{TWILIO_RUBY_ROOT}/twilio-ruby/rest/errors"
15
17
  require "#{TWILIO_RUBY_ROOT}/twilio-ruby/rest/utils"
16
18
  require "#{TWILIO_RUBY_ROOT}/twilio-ruby/rest/list_resource"
@@ -7,7 +7,7 @@ module Twilio
7
7
 
8
8
  HTTP_HEADERS = {
9
9
  'Accept' => 'application/json',
10
- 'User-Agent' => 'twilio-ruby/3.1.1',
10
+ 'User-Agent' => 'twilio-ruby/3.2.0',
11
11
  }
12
12
 
13
13
  attr_reader :account_sid, :account, :accounts
@@ -0,0 +1,61 @@
1
+ module Twilio
2
+ module Util
3
+ class Capability
4
+
5
+ include Twilio::Util
6
+
7
+ def initialize(account_sid, auth_token)
8
+ @account_sid = account_sid
9
+ @auth_token = auth_token
10
+ @capabilities = []
11
+ end
12
+
13
+ def allow_client_incoming(client_name)
14
+ @client_name = client_name # stash for use in outgoing
15
+ scope_params = {'clientName' => client_name}
16
+ @capabilities << scope_uri_for('client', 'incoming', scope_params)
17
+ end
18
+
19
+ def allow_client_outgoing(app_sid, params = {})
20
+ @allow_client_outgoing = true
21
+ @outgoing_scope_params = {'appSid' => app_sid}
22
+ unless params.empty?
23
+ @outgoing_scope_params['appParams'] = url_encode params
24
+ end
25
+ end
26
+
27
+ def allow_event_stream(filters = {})
28
+ scope_params = {'path' => '/2010-04-01/Events'}
29
+ scope_params['params'] = filters unless filters.empty?
30
+ @capabilities << scope_uri_for('stream', 'subscribe', scope_params)
31
+ end
32
+
33
+ def scope_uri_for(service, privilege, params = {})
34
+ scope_uri = "scope:#{service}:#{privilege}"
35
+ scope_uri << "?#{url_encode(params)}" unless params.empty?
36
+ end
37
+
38
+ def generate(ttl = 3600)
39
+
40
+ capabilities = @capabilities.clone # we need a local copy to work on
41
+
42
+ # build the outgoing scope lazily so that we can use @client_name
43
+ if @allow_client_outgoing
44
+ params = @outgoing_scope_params
45
+ params.merge!({'clientName' => @client_name}) if @client_name
46
+ capabilities << scope_uri_for('client', 'outgoing', params)
47
+ end
48
+
49
+ payload = {
50
+ 'scope' => capabilities.join(' '),
51
+ 'iss' => @account_sid,
52
+ 'exp' => (Time.now.to_i + ttl),
53
+ }
54
+
55
+ JWT.encode payload, @auth_token
56
+
57
+ end
58
+
59
+ end
60
+ end
61
+ end
@@ -12,7 +12,7 @@ module Twilio
12
12
  end
13
13
 
14
14
  def build_signature_for(url, params)
15
- data = url + params.sort.to_s
15
+ data = url + params.sort.join
16
16
  digest = OpenSSL::Digest::Digest.new('sha1')
17
17
  Base64.encode64(OpenSSL::HMAC.digest(digest, @auth_token, data)).strip
18
18
  end
data/twilio-ruby.gemspec CHANGED
@@ -1,14 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "twilio-ruby"
3
- s.version = "3.1.1"
3
+ s.version = "3.2.0"
4
4
  s.author = "Andrew Benton"
5
5
  s.email = "andrew@twilio.com"
6
- s.description = "A simple library for communicating with the Twilio REST API"
7
- s.summary = "A simple library for communicating with the Twilio REST API"
6
+ s.description = "A simple library for communicating with the Twilio REST API, building TwiML, and generating Twilio Client Capability Tokens"
7
+ s.summary = "A simple library for communicating with the Twilio REST API, building TwiML, and generating Twilio Client Capability Tokens"
8
8
  s.homepage = "http://github.com/twilio/twilio-ruby"
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.files = Dir['lib/**/*.rb'] + Dir['test/**/*.rb'] + ['examples.rb', 'Rakefile', 'LICENSE', 'README.md', 'twilio-ruby.gemspec']
11
11
  s.test_files = Dir['test/**/*.rb']
12
12
  s.add_dependency("json", ">= 1.2.0")
13
13
  s.add_dependency("builder", ">= 2.1.2")
14
+ s.add_dependency("jwt", ">= 0.1.2")
14
15
  end
metadata CHANGED
@@ -1,64 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: twilio-ruby
3
- version: !ruby/object:Gem::Version
4
- hash: 1
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.2.0
5
5
  prerelease:
6
- segments:
7
- - 3
8
- - 1
9
- - 1
10
- version: 3.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Andrew Benton
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-22 00:00:00 -07:00
12
+ date: 2011-07-26 00:00:00.000000000 -07:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: json
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &17469100 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 31
30
- segments:
31
- - 1
32
- - 2
33
- - 0
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
34
22
  version: 1.2.0
35
23
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: builder
39
24
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *17469100
26
+ - !ruby/object:Gem::Dependency
27
+ name: builder
28
+ requirement: &17468340 !ruby/object:Gem::Requirement
41
29
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 2
48
- - 1
49
- - 2
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
50
33
  version: 2.1.2
51
34
  type: :runtime
52
- version_requirements: *id002
53
- description: A simple library for communicating with the Twilio REST API
35
+ prerelease: false
36
+ version_requirements: *17468340
37
+ - !ruby/object:Gem::Dependency
38
+ name: jwt
39
+ requirement: &17467360 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.1.2
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *17467360
48
+ description: A simple library for communicating with the Twilio REST API, building
49
+ TwiML, and generating Twilio Client Capability Tokens
54
50
  email: andrew@twilio.com
55
51
  executables: []
56
-
57
52
  extensions: []
58
-
59
53
  extra_rdoc_files: []
60
-
61
- files:
54
+ files:
62
55
  - lib/twilio-ruby.rb
63
56
  - lib/twilio-ruby/rest/client.rb
64
57
  - lib/twilio-ruby/rest/list_resource.rb
@@ -96,6 +89,7 @@ files:
96
89
  - lib/twilio-ruby/rest/available_phone_numbers/toll_free.rb
97
90
  - lib/twilio-ruby/rest/sandbox/sandbox.rb
98
91
  - lib/twilio-ruby/rest/instance_resource.rb
92
+ - lib/twilio-ruby/util/capability.rb
99
93
  - lib/twilio-ruby/util/request_validator.rb
100
94
  - lib/twilio-ruby/util.rb
101
95
  - lib/twilio-ruby/twiml/response.rb
@@ -108,36 +102,28 @@ files:
108
102
  has_rdoc: true
109
103
  homepage: http://github.com/twilio/twilio-ruby
110
104
  licenses: []
111
-
112
105
  post_install_message:
113
106
  rdoc_options: []
114
-
115
- require_paths:
107
+ require_paths:
116
108
  - lib
117
- required_ruby_version: !ruby/object:Gem::Requirement
109
+ required_ruby_version: !ruby/object:Gem::Requirement
118
110
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 3
123
- segments:
124
- - 0
125
- version: "0"
126
- required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
116
  none: false
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- hash: 3
132
- segments:
133
- - 0
134
- version: "0"
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
135
121
  requirements: []
136
-
137
122
  rubyforge_project:
138
123
  rubygems_version: 1.6.2
139
124
  signing_key:
140
125
  specification_version: 3
141
- summary: A simple library for communicating with the Twilio REST API
142
- test_files:
126
+ summary: A simple library for communicating with the Twilio REST API, building TwiML,
127
+ and generating Twilio Client Capability Tokens
128
+ test_files:
143
129
  - test/twilio_spec.rb