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
						
					
					
				| /**
 | |
|  @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;
 | |
| };
 |