Class: Restcomm::REST::TaskRouterClient

Inherits:
BaseClient
  • Object
show all
Defined in:
lib/restcomm-ruby/rest/client.rb

Constant Summary collapse

API_VERSION =
'v1'
DEFAULTS =
{
    host: '192.168.1.8',
    port: 80,
    use_ssl: false,
    ssl_verify_peer: false,
    ssl_ca_file: File.dirname(__FILE__) + '/../../../conf/cacert.pem',
    timeout: 30,
    proxy_addr: nil,
    proxy_port: nil,
    proxy_user: nil,
    proxy_pass: nil,
    retry_limit: 1
}

Constants inherited from BaseClient

BaseClient::HTTP_HEADERS

Instance Attribute Summary collapse

Attributes inherited from BaseClient

#account_sid, #last_request, #last_response

Instance Method Summary collapse

Methods included from Utils

#derestify, #restify

Methods included from Util

#get_string, #url_encode

Constructor Details

#initialize(*args) ⇒ TaskRouterClient

Instantiate a new HTTP TaskRouter client to talk to Restcomm. The parameters account_sid, auth_token and +workspace_sid are required, unless you have configured them already using the block configure syntax, and used to generate the HTTP basic auth header in each request. The options parameter is a hash of connection configuration options. the following keys are supported:

host: 'taskrouter.restcomm.com'

The domain to which you’d like the client to make HTTP requests. Useful for testing. Defaults to ‘api.restcomm.com’.

port: 443

The port on which to connect to the above domain. Defaults to 443 and should be left that way except in testing environments.

use_ssl: true

Declare whether ssl should be used for connections to the above domain. Defaults to true and should be left alone except when testing.

ssl_verify_peer: true

Declare whether to verify the host’s ssl cert when setting up the connection to the above domain. Defaults to true, but can be turned off to avoid ssl certificate verification failures in environments without the necessary ca certificates.

ssl_ca_file: '/path/to/ca/file'

Specify the path to the certificate authority bundle you’d like to use to verify Restcomm’s SSL certificate on each request. If not specified, a certificate bundle extraced from Firefox is packaged with the gem and used by default.

timeout: 30

Set the time in seconds to wait before timing out the HTTP request. Defaults to 30 seconds. If you aren’t fetching giant pages of call or SMS logs you can safely decrease this to something like 3 seconds or lower. In paricular if you are sending SMS you can set this to 1 second or less and swallow the exception if you don’t care about the response.

proxy_addr: 'proxy.host.domain'

The domain of a proxy through which you’d like the client to make HTTP requests. Defaults to nil.

proxy_port: 3128

The port on which to connect to the above proxy. Defaults to nil.

proxy_user: 'username'

The user name to use for authentication with the proxy. Defaults to nil.

proxy_pass: 'password'

The password to use for authentication with the proxy. Defaults to nil.

retry_limit: 1

The number of times to retry a request that has failed before throwing an exception. Defaults to one.



439
440
441
442
443
444
445
# File 'lib/restcomm-ruby/rest/client.rb', line 439

def initialize(*args)
  @workspace_sid = args[2]
  if @workspace_sid.nil?
    raise ArgumentError, 'Workspace SID is required'
  end
  super(*args)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object

Delegate workspace methods from the client. This saves having to call client.workspace every time for resources on the default workspace.



476
477
478
479
480
481
482
# File 'lib/restcomm-ruby/rest/client.rb', line 476

def method_missing(method_name, *args, &block)
  if workspace.respond_to?(method_name)
    workspace.send(method_name, *args, &block)
  else
    super
  end
end

Instance Attribute Details

#workspaceObject (readonly)

Returns the value of attribute workspace.



371
372
373
# File 'lib/restcomm-ruby/rest/client.rb', line 371

def workspace
  @workspace
end

#workspace_sidObject (readonly)

Returns the value of attribute workspace_sid.



371
372
373
# File 'lib/restcomm-ruby/rest/client.rb', line 371

def workspace_sid
  @workspace_sid
end

#workspacesObject (readonly)

Returns the value of attribute workspaces.



371
372
373
# File 'lib/restcomm-ruby/rest/client.rb', line 371

def workspaces
  @workspaces
end

Instance Method Details

#inspectObject

:nodoc:



468
469
470
# File 'lib/restcomm-ruby/rest/client.rb', line 468

def inspect # :nodoc:
  "<Restcomm::REST::TaskRouterClient @account_sid=#{@account_sid}>"
end

#methodObject

Define #get, #put, #post and #delete helper methods for sending HTTP requests to Restcomm. You shouldn’t need to use these methods directly, but they can be useful for debugging. Each method returns a hash obtained from parsing the JSON object in the response body.



452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
# File 'lib/restcomm-ruby/rest/client.rb', line 452

[:get, :put, :post, :delete].each do |method|
  method_class = Net::HTTP.const_get method.to_s.capitalize
  define_method method do |path, *args|
    params = restify args[0]; params = {} if params.empty?
    unless args[1] # build the full path unless already given
      path = path.dup
      path << "?#{url_encode(params)}" if method == :get && !params.empty?

    end
    request = method_class.new path, HTTP_HEADERS
    request.basic_auth @account_sid, @auth_token
    request.form_data = params if [:post, :put].include? method
    connect_and_send request
  end
end

#respond_to?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


484
485
486
487
488
489
490
# File 'lib/restcomm-ruby/rest/client.rb', line 484

def respond_to?(method_name, include_private=false)
  if workspace.respond_to?(method_name, include_private)
    true
  else
    super
  end
end

#task_queue_statistics(task_queue_sid, *args) ⇒ Object

Get statistics of a task queue.



494
495
496
497
498
499
500
501
# File 'lib/restcomm-ruby/rest/client.rb', line 494

def task_queue_statistics(task_queue_sid, *args) # :doc:
  if task_queue_sid.nil?
    raise ArgumentError, 'Task queue SID is required'
  end
  path = "/#{API_VERSION}/Workspaces/#{@workspace_sid}/TaskQueues/#{task_queue_sid}/Statistics"
  response = get path, args, true
  Restcomm::REST::TaskRouter::TaskQueueStatistics.new path, self, response
end

#task_queues_statistics(*args) ⇒ Object

Get statistics of task queues.



505
506
507
508
509
# File 'lib/restcomm-ruby/rest/client.rb', line 505

def task_queues_statistics(*args) # :doc:
  path = "/#{API_VERSION}/Workspaces/#{@workspace_sid}/TaskQueues/Statistics"
  stats = Restcomm::REST::TaskRouter::TaskQueuesStatistics.new path, self
  stats.list args, true
end

#worker_statistics(worker_sid, *args) ⇒ Object

Get statistics of a worker.



513
514
515
516
517
518
519
520
# File 'lib/restcomm-ruby/rest/client.rb', line 513

def worker_statistics(worker_sid, *args) # :doc:
  if worker_sid.nil?
    raise ArgumentError, 'Worker SID is required'
  end
  path = "/#{API_VERSION}/Workspaces/#{@workspace_sid}/Workers/#{worker_sid}/Statistics"
  response = get path, args, true
  Restcomm::REST::TaskRouter::WorkerStatistics.new path, self, response
end

#workers_statistics(*args) ⇒ Object

Get statistics of workers.



524
525
526
527
528
# File 'lib/restcomm-ruby/rest/client.rb', line 524

def workers_statistics(*args) # :doc:
  path = "/#{API_VERSION}/Workspaces/#{@workspace_sid}/Workers/Statistics"
  response = get path, args, true
  Restcomm::REST::TaskRouter::WorkersStatistics.new path, self, response
end

#workflow_statistics(workflow_sid, *args) ⇒ Object

Get statistics of a workflow.



532
533
534
535
536
537
538
539
# File 'lib/restcomm-ruby/rest/client.rb', line 532

def workflow_statistics(workflow_sid, *args) # :doc:
  if workflow_sid.nil?
    raise ArgumentError, 'Workflow SID is required'
  end
  path = "/#{API_VERSION}/Workspaces/#{@workspace_sid}/Workflows/#{workflow_sid}/Statistics"
  response = get path, args, true
  Restcomm::REST::TaskRouter::WorkflowStatistics.new path, self, response
end

#workspace_statistics(*args) ⇒ Object

Get statistics of a workspace.



543
544
545
546
547
# File 'lib/restcomm-ruby/rest/client.rb', line 543

def workspace_statistics(*args) # :doc:
  path = "/#{API_VERSION}/Workspaces/#{@workspace_sid}/Statistics"
  response = get path, args, true
  Restcomm::REST::TaskRouter::WorkspaceStatistics.new path, self, response
end