aboutsummaryrefslogtreecommitdiff
path: root/samples/apex/TwilioAPI.cls
diff options
context:
space:
mode:
Diffstat (limited to 'samples/apex/TwilioAPI.cls')
-rw-r--r--samples/apex/TwilioAPI.cls114
1 files changed, 114 insertions, 0 deletions
diff --git a/samples/apex/TwilioAPI.cls b/samples/apex/TwilioAPI.cls
new file mode 100644
index 0000000..4c49d28
--- /dev/null
+++ b/samples/apex/TwilioAPI.cls
@@ -0,0 +1,114 @@
+/*
+Copyright (c) 2012 Twilio, Inc.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+/**
+ * Entry point for accessing Twilio resources that are pre-configured
+ * with credentials from the Twilio Config custom setting (TwilioConfig__c).
+ *
+ * To set up your Twilio credentials:
+ * 1. Get a Twilio account at http://www.twilio.com/try-twilio
+ * 2. Find your Twilio Account Sid and Auth Token at https://www.twilio.com/user/account
+ * 3. Log into Salesforce and go to: Setup | Develop | Custom Settings | Manage Twilio Config
+ * 4. Create a new Twilo Config instance
+ * 5. Copy and paste your Account Sid and Auth Token and click Save
+ *
+ * NOTE: The Application Sid field is for use with the Twilio Client softphone
+ * SDK for Javascript. It is not required for the rest of the Twilio API.
+ *
+ * Now you can get easy access to Twilio from your Apex code by calling:
+ *
+ * TwilioRestClient restClient = TwilioAPI.getDefaultClient();
+ * restClient.getAccount().getCalls();
+ * // etc.
+ */
+global class TwilioAPI {
+
+ private class MissingTwilioConfigCustomSettingsException extends Exception {}
+
+ private static TwilioRestClient client;
+
+ private TwilioAPI() {}
+
+ /**
+ * Get a TwilioRestClient pre-populated with your TwilioConfig credentials
+ */
+ public static TwilioRestClient getDefaultClient() {
+ if (client==null) {
+ TwilioConfig__c twilioCfg = getTwilioConfig();
+ TwilioAPI.client = new TwilioRestClient(twilioCfg.AccountSid__c, twilioCfg.AuthToken__c);
+ }
+ return TwilioAPI.client;
+ }
+
+ /**
+ * Get your primary account using your TwilioConfig credentials
+ */
+ public static TwilioAccount getDefaultAccount() {
+ return getDefaultClient().getAccount();
+ }
+
+ /**
+ * Get a new Twilio Client capability token generator pre-populated
+ * with your TwilioConfig credentials
+ */
+ public static TwilioCapability createCapability() {
+ TwilioConfig__c twilioCfg = getTwilioConfig();
+ return new TwilioCapability(twilioCfg.AccountSid__c, twilioCfg.AuthToken__c);
+ }
+
+ /**
+ * Get a new TwilioRestClient authorized with the credentials provided
+ */
+ public static TwilioRestClient createClient(String accountSid, String authToken) {
+ return new TwilioRestClient(accountSid, authToken);
+ }
+
+ /**
+ * Load the org default TwilioConfig record
+ */
+ public static TwilioConfig__c getTwilioConfig() {
+ TwilioConfig__c twilioCfg;
+ if (Test.isRunningTest()) {
+ twilioCfg = new TwilioConfig__c();
+ twilioCfg.AccountSid__c = 'ACba8bc05eacf94afdae398e642c9cc32d'; // dummy sid
+ twilioCfg.AuthToken__c = '12345678901234567890123456789012'; // dummy token
+ } else {
+ twilioCfg = TwilioConfig__c.getOrgDefaults();
+ if (twilioCfg==null)
+ throw new MissingTwilioConfigCustomSettingsException('Please enter your Twilio account credentials under Twilio Config custom settings (go to Setup | Develop | Custom Settings | Manage Twilio Config)');
+ }
+ return twilioCfg;
+ }
+
+
+ @isTest
+ static void test_TwilioAPI() {
+ System.assertEquals('ACba8bc05eacf94afdae398e642c9cc32d', TwilioAPI.getTwilioConfig().AccountSid__c);
+ System.assertEquals('12345678901234567890123456789012', TwilioAPI.getTwilioConfig().AuthToken__c);
+ System.assertEquals('ACba8bc05eacf94afdae398e642c9cc32d', TwilioAPI.getDefaultClient().getAccountSid());
+ System.assertEquals('ACba8bc05eacf94afdae398e642c9cc32d', TwilioAPI.getDefaultClient().getAccount().getSid());
+ System.assertEquals('ACba8bc05eacf94afdae398e642c9cc32d', TwilioAPI.getDefaultAccount().getSid());
+ }
+
+} \ No newline at end of file