Sha256: 625eeae92d3797e63dcb8e5f0125870f5af09dd235ce4ab6b00377be39a104d1
Contents?: true
Size: 1.96 KB
Versions: 1
Compression:
Stored size: 1.96 KB
Contents
module Twilio module Util class Capability include Twilio::Util def initialize(account_sid = nil, auth_token = nil) @account_sid = account_sid || Twilio.account_sid @auth_token = auth_token || Twilio.auth_token if @account_sid.nil? || @auth_token.nil? raise ArgumentError, 'Account SID and auth token are required' end @capabilities = [] end 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 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 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 def scope_uri_for(service, privilege, params = {}) scope_uri = "scope:#{service}:#{privilege}" scope_uri << "?#{url_encode(params)}" unless params.empty? end 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 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
twilio-ruby-3.12.3 | lib/twilio-ruby/util/capability.rb |