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.
		
		
		
		
		
			
		
			
				
					67 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					67 lines
				
				2.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 @module RestClient
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 This module presents a higher-level API for interacting with resources
							 | 
						||
| 
								 | 
							
								 in the Twilio REST 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 REST 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: api.twilio.com)
							 | 
						||
| 
								 | 
							
								 - @member {string} apiVersion - the Twilio REST API version to use for requests (default: 2010-04-01)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function RestClient(sid, tkn, options) {
							 | 
						||
| 
								 | 
							
								    options = options || {};
							 | 
						||
| 
								 | 
							
								    RestClient.super_.call(this, sid, tkn, options.host, options.apiVersion, options.timeout);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //REST Resource - shorthand for just "account" and "accounts" to match the REST API
							 | 
						||
| 
								 | 
							
								    var accountResource = require('./resources/Accounts')(this);
							 | 
						||
| 
								 | 
							
								    this.accounts = accountResource;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //mix the account object in with the client object - assume master account for resources
							 | 
						||
| 
								 | 
							
								    _.extend(this,accountResource);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //Messaging shorthand
							 | 
						||
| 
								 | 
							
								    this.sendSms = this.accounts.sms.messages.post;
							 | 
						||
| 
								 | 
							
								    this.sendMms = this.accounts.messages.post;
							 | 
						||
| 
								 | 
							
								    this.sendMessage = this.accounts.messages.post;
							 | 
						||
| 
								 | 
							
								    this.listSms = this.accounts.sms.messages.get;
							 | 
						||
| 
								 | 
							
								    this.listMessages = this.accounts.messages.get;
							 | 
						||
| 
								 | 
							
								    this.getSms = function(messageSid, callback) {
							 | 
						||
| 
								 | 
							
								        this.accounts.sms.messages(messageSid).get(callback);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    this.getMessage = function(messageSid, callback) {
							 | 
						||
| 
								 | 
							
								        this.accounts.messages(messageSid).get(callback);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //Calls shorthand
							 | 
						||
| 
								 | 
							
								    this.makeCall = this.accounts.calls.post;
							 | 
						||
| 
								 | 
							
								    this.listCalls = this.accounts.calls.get;
							 | 
						||
| 
								 | 
							
								    this.getCall = function(callSid, callback) {
							 | 
						||
| 
								 | 
							
								        this.accounts.calls(callSid).get(callback);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								util.inherits(RestClient, Client);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								RestClient.prototype.request = function(options, callback) {
							 | 
						||
| 
								 | 
							
								    var client = this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Force .json for Coke Classic API
							 | 
						||
| 
								 | 
							
								    options.url = options.url + '.json';
							 | 
						||
| 
								 | 
							
								    return RestClient.super_.prototype.request.call(this, options, callback);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = RestClient;
							 |