You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					52 lines
				
				1.9 KiB
			
		
		
			
		
	
	
					52 lines
				
				1.9 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 @module TaskRouterClient
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 This module presents a higher-level API for interacting with resources
							 | 
						||
| 
								 | 
							
								 in the Twilio TaskRouter API.  Tries to map very closely to the resource structure
							 | 
						||
| 
								 | 
							
								 of the actual Twilio API, while still providing a nice JavaScript interface.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Dependencies
							 | 
						||
| 
								 | 
							
								var _ = require('underscore');
							 | 
						||
| 
								 | 
							
								var Client = require('./Client');
							 | 
						||
| 
								 | 
							
								var util = require('util');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 The Twilio TaskRouter API client
							 | 
						||
| 
								 | 
							
								 @constructor
							 | 
						||
| 
								 | 
							
								 @param {string} sid - The application SID, as seen in the Twilio portal
							 | 
						||
| 
								 | 
							
								 @param {string} tkn - The auth token, as seen in the Twilio portal
							 | 
						||
| 
								 | 
							
								 @param {object} options (optional) - optional config for the REST client
							 | 
						||
| 
								 | 
							
								 - @member {string} host - host for the Twilio API (default: taskrouter.twilio.com)
							 | 
						||
| 
								 | 
							
								 - @member {string} apiVersion - the Twilio REST API version to use for requests (default: v1)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function TaskRouterClient(sid, tkn, workspaceSid, options) {
							 | 
						||
| 
								 | 
							
								    //Required client config
							 | 
						||
| 
								 | 
							
								    if (!workspaceSid) {
							 | 
						||
| 
								 | 
							
								        if (process.env.TWILIO_WORKSPACE_SID) {
							 | 
						||
| 
								 | 
							
								            this.workspaceSid = process.env.TWILIO_WORKSPACE_SID;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        else {
							 | 
						||
| 
								 | 
							
								            throw 'Client requires a Workspace SID set explicitly or via the TWILIO_WORKSPACE_SID environment variables';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								        //trim spaces
							 | 
						||
| 
								 | 
							
								        this.workspaceSid = workspaceSid.replace(/ /g, '');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    options = options || {};
							 | 
						||
| 
								 | 
							
								    TaskRouterClient.super_.call(this, sid, tkn, options.host || 'taskrouter.twilio.com', options.apiVersion || 'v1', options.timeout);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //REST Resource - shorthand for just "workspace" and "workspaces" to match the REST API
							 | 
						||
| 
								 | 
							
								    var workspaceResource = require('./resources/task_router/Workspaces')(this);
							 | 
						||
| 
								 | 
							
								    this.workspaces = workspaceResource;
							 | 
						||
| 
								 | 
							
								    this.workspace = workspaceResource(this.workspaceSid);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //mix the account object in with the client object - assume master account for resources
							 | 
						||
| 
								 | 
							
								    _.extend(this, workspaceResource);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								util.inherits(TaskRouterClient, Client);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = TaskRouterClient;
							 |