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.
		
		
		
		
		
			
		
			
				
					116 lines
				
				4.7 KiB
			
		
		
			
		
	
	
					116 lines
				
				4.7 KiB
			| 
											3 years ago
										 | /** | ||
|  |  @module resources/Accounts | ||
|  |  The Twilio "Accounts" Resource. | ||
|  |  */ | ||
|  | var _ = require('underscore'), | ||
|  |     generate = require('./generate'), | ||
|  |     ListInstanceResource = require('./ListInstanceResource'); | ||
|  | 
 | ||
|  | module.exports = function (client) { | ||
|  | 
 | ||
|  |     //Define subresources on the accounts resource, with the given account SID
 | ||
|  |     function mixinResources(obj, sid) { | ||
|  |         //All other REST resources are based on account - some can simply be generated, others need additonal URL params
 | ||
|  |         //TODO: This can probably be smarter.  Should eventually refactor generator to do subresources too. Shouldn't need to be custom
 | ||
|  |         //Probably should generate the whole f***ing thing from an object literal describing the resource structure.  But this does work.
 | ||
|  |         var subresources = { | ||
|  |             availablePhoneNumbers:require('./AvailablePhoneNumbers')(client, sid), | ||
|  |             outgoingCallerIds:ListInstanceResource(client, sid, 'OutgoingCallerIds', | ||
|  |                 ['GET', 'POST', 'PUT', 'DELETE', { update:'PUT' }], | ||
|  |                 ['GET', 'POST', { create:'POST' }] | ||
|  |             ), | ||
|  |             incomingPhoneNumbers:require('./IncomingPhoneNumbers')(client, sid), | ||
|  |             messages: require('./Messages')(client, sid), | ||
|  |             sms:{ | ||
|  |                 messages:ListInstanceResource(client, sid, 'SMS/Messages', | ||
|  |                     ['GET'], | ||
|  |                     ['GET', 'POST', {create:'POST'}] | ||
|  |                 ), | ||
|  |                 shortCodes:ListInstanceResource(client, sid, 'SMS/ShortCodes', | ||
|  |                     ['GET', 'POST', {update:'POST'}], | ||
|  |                     ['GET'] | ||
|  |                 ) | ||
|  |             }, | ||
|  |             applications:ListInstanceResource(client, sid, 'Applications', | ||
|  |                 ['GET', 'POST', 'DELETE', {update:'POST'}], | ||
|  |                 ['GET', 'POST', {create:'POST'}] | ||
|  |             ), | ||
|  |             connectApps:ListInstanceResource(client, sid, 'ConnectApps', | ||
|  |                 ['GET', 'POST', {update:'POST'}], | ||
|  |                 ['GET'] | ||
|  |             ), | ||
|  |             authorizedConnectApps:ListInstanceResource(client, sid, 'AuthorizedConnectApps', | ||
|  |                 ['GET'], | ||
|  |                 ['GET'] | ||
|  |             ), | ||
|  |             calls:require('./Calls')(client, sid), | ||
|  |             conferences:require('./Conferences')(client, sid), | ||
|  |             queues:require('./Queues')(client, sid), | ||
|  |             recordings:require('./Recordings')(client, sid), | ||
|  |             tokens: ListInstanceResource(client, sid, 'Tokens', | ||
|  |                 [], | ||
|  |                 ['POST', {create:'POST'}] | ||
|  |             ), | ||
|  |             transcriptions:ListInstanceResource(client, sid, 'Transcriptions', | ||
|  |                 ['GET', 'DELETE'], | ||
|  |                 ['GET'] | ||
|  |             ), | ||
|  |             notifications:ListInstanceResource(client, sid, 'Notifications', | ||
|  |                 ['GET', 'DELETE'], | ||
|  |                 ['GET'] | ||
|  |             ), | ||
|  |             usage:{ | ||
|  |                 records:require('./UsageRecords')(client, sid), | ||
|  |                 triggers:ListInstanceResource(client,sid,'Usage/Triggers', | ||
|  |                     ['GET','POST','DELETE',{update:'POST'}], | ||
|  |                     ['GET','POST',{create:'POST'}] | ||
|  |                 ) | ||
|  |             }, | ||
|  |             sip:{ | ||
|  |                 domains:require('./sip/Domains')(client, sid), | ||
|  |                 ipAccessControlLists:require('./sip/IpAccessControlLists')(client,sid), | ||
|  |                 credentialLists:require('./sip/CredentialLists')(client,sid) | ||
|  |             }, | ||
|  |             addresses:require('./Addresses')(client, sid), | ||
|  |             keys:ListInstanceResource(client, sid, 'Keys', | ||
|  |                 ['GET', 'POST', 'DELETE', {update: 'POST'}], | ||
|  |                 ['GET', 'POST', {create: 'POST'}] | ||
|  |             ) | ||
|  |         }; | ||
|  | 
 | ||
|  |         //Add resources to Accounts.* or Accounts(sid).*
 | ||
|  |         _.extend(obj, subresources); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      The Twilio Accounts Resource | ||
|  |      @constructor | ||
|  |      @param {string} accountSid - The specific account for which to scope requests | ||
|  |      */ | ||
|  |     function Accounts(accountSid) { | ||
|  |         //This is the resource for accounts aside from the default master account
 | ||
|  |         var resourceApi = {}; | ||
|  | 
 | ||
|  |         //generate REST function calls for the appropriate resource
 | ||
|  |         generate.restFunctions(resourceApi, client, ['GET', 'PUT', 'POST'], '/Accounts/' + accountSid); | ||
|  |         resourceApi.update = resourceApi.post; | ||
|  |         resourceApi.list = resourceApi.get; | ||
|  | 
 | ||
|  |         //Mix in sub resources
 | ||
|  |         mixinResources(resourceApi, accountSid); | ||
|  | 
 | ||
|  |         //Return resource API, plus sub-resources
 | ||
|  |         return resourceApi; | ||
|  |     } | ||
|  | 
 | ||
|  |     //Create REST functions with the default account
 | ||
|  |     generate.restFunctions(Accounts, client, ['GET', 'POST'], '/Accounts'); | ||
|  |     Accounts.create = Accounts.post; | ||
|  |     Accounts.list = Accounts.get; | ||
|  | 
 | ||
|  |     //Define other sub-resources of Accounts for master account
 | ||
|  |     mixinResources(Accounts, client.accountSid); | ||
|  | 
 | ||
|  |     return Accounts; | ||
|  | }; |