class Restcomm::TaskRouter::Capability

Constants

OPTIONAL
REQUIRED
TASK_ROUTER_BASE_URL
TASK_ROUTER_VERSION
TASK_ROUTER_WEBSOCKET_BASE_URL

Public Class Methods

new(account_sid, auth_token, workspace_sid, worker_sid) click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
12 def initialize(account_sid, auth_token, workspace_sid, worker_sid)
13   @account_sid = account_sid
14   @auth_token = auth_token
15   @workspace_sid = workspace_sid
16   @worker_sid = worker_sid
17   @policies = []
18   allow_websocket_requests
19   allow_activity_list_fetch
20 end

Public Instance Methods

add_policy(url, method, query_filters = nil, post_filters = nil, allowed = true) click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
43 def add_policy(url, method, query_filters = nil, post_filters = nil, allowed = true)
44   policy = {
45     url: url,
46     method: method,
47     query_filter: query_filters || {},
48     post_filter: post_filters || {},
49     allow: allowed
50   }
51 
52   @policies.push(policy)
53 end
allow_task_reservation_updates() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
38 def allow_task_reservation_updates
39   task_url = "#{workspace_url}/Tasks/**"
40   add_policy(task_url, "POST", nil, {ReservationStatus: REQUIRED})
41 end
allow_worker_activity_updates() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
30 def allow_worker_activity_updates
31   add_policy(worker_url, "POST", nil, {ActivitySid: REQUIRED})
32 end
allow_worker_fetch_attributes() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
34 def allow_worker_fetch_attributes
35   add_policy(worker_url, "GET")
36 end
generate_token(ttl = 3600) click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
55 def generate_token(ttl = 3600)
56   payload = {
57     iss: @account_sid,
58     exp: (Time.now.to_i + ttl),
59     version: @version,
60     friendly_name: @worker_sid,
61     policies: @policies,
62     account_sid: @account_sid,
63     worker_sid: @worker_sid,
64     channel: @worker_sid,
65     workspace_sid: @workspace_sid
66   }
67 
68   JWT.encode payload, @auth_token
69 end
worker_url() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
26 def worker_url
27   "#{workspace_url}/Workers/#{@worker_sid}"
28 end
workspace_url() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
22 def workspace_url
23   "#{TASK_ROUTER_BASE_URL}/#{TASK_ROUTER_VERSION}/Workspaces/#{@workspace_sid}"
24 end

Protected Instance Methods

allow_activity_list_fetch() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
80 def allow_activity_list_fetch
81   url = "#{workspace_url}/Activities"
82   add_policy(url, 'GET')
83 end
allow_websocket_requests() click to toggle source
   # File lib/restcomm-ruby/task_router/capability.rb
73 def allow_websocket_requests
74   worker_url = "#{TASK_ROUTER_WEBSOCKET_BASE_URL}/#{@account_sid}/#{@worker_sid}"
75   ['GET', 'POST'].each do |meth|
76     add_policy(worker_url, meth)
77   end
78 end