Class: Gridspace::Util::Capability
- Inherits:
-
Object
- Object
- Gridspace::Util::Capability
- Includes:
- Gridspace::Util
- Defined in:
- lib/gridspace/capability.rb
Instance Method Summary collapse
- #allow_client_incoming(client_name) ⇒ Object
- #allow_client_outgoing(app_sid, params = {}) ⇒ Object
- #allow_event_stream(filters = {}) ⇒ Object
- #generate(ttl = 3600) ⇒ Object
-
#initialize(account_sid, auth_token) ⇒ Capability
constructor
A new instance of Capability.
- #scope_uri_for(service, privilege, params = {}) ⇒ Object
Methods included from Gridspace::Util
Constructor Details
#initialize(account_sid, auth_token) ⇒ Capability
Returns a new instance of Capability.
20 21 22 23 24 25 26 27 |
# File 'lib/gridspace/capability.rb', line 20 def initialize(account_sid, auth_token) @account_sid = account_sid @auth_token = auth_token if @account_sid.nil? || @auth_token.nil? raise ArgumentError, 'Account SID and auth token are required' end @capabilities = [] end |
Instance Method Details
#allow_client_incoming(client_name) ⇒ Object
29 30 31 32 33 |
# File 'lib/gridspace/capability.rb', line 29 def allow_client_incoming(client_name) @client_name = client_name # stash for use in outgoing scope_params = { 'clientName' => client_name } @capabilities << scope_uri_for('client', 'incoming', scope_params) end |
#allow_client_outgoing(app_sid, params = {}) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/gridspace/capability.rb', line 35 def allow_client_outgoing(app_sid, params = {}) @allow_client_outgoing = true @outgoing_scope_params = { 'appSid' => app_sid } unless params.empty? @outgoing_scope_params['appParams'] = url_encode params end end |
#allow_event_stream(filters = {}) ⇒ Object
43 44 45 46 47 |
# File 'lib/gridspace/capability.rb', line 43 def allow_event_stream(filters = {}) scope_params = { 'path' => '/2010-04-01/Events' } scope_params['params'] = filters unless filters.empty? @capabilities << scope_uri_for('stream', 'subscribe', scope_params) end |
#generate(ttl = 3600) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/gridspace/capability.rb', line 54 def generate(ttl = 3600) capabilities = @capabilities.clone # we need a local copy to work on # build the outgoing scope lazily so that we can use @client_name if @allow_client_outgoing params = @outgoing_scope_params params.merge!('clientName' => @client_name) if @client_name capabilities << scope_uri_for('client', 'outgoing', params) end payload = { 'scope' => capabilities.join(' '), 'iss' => @account_sid, 'exp' => (Time.now.to_i + ttl), } JWT.encode payload, @auth_token end |
#scope_uri_for(service, privilege, params = {}) ⇒ Object
49 50 51 52 |
# File 'lib/gridspace/capability.rb', line 49 def scope_uri_for(service, privilege, params = {}) scope_uri = "scope:#{service}:#{privilege}" scope_uri << "?#{url_encode(params)}" unless params.empty? end |