/// declare var require:(name:string)=>any; import headers = require('./core/http/Headers'); import request = require('./core/http/Request'); import response = require('./core/http/Response'); import pubnubMock = require('./core/pubnub/PubnubMock'); import xhrMock = require('./core/xhr/XhrMock'); import xhrResponse = require('./core/xhr/XhrResponse'); import ajaxObserver = require('./core/AjaxObserver'); import cache = require('./core/Cache'); import context = require('./core/Context'); import helper = require('./core/Helper'); import list = require('./core/List'); import log = require('./core/Log'); import observable = require('./core/Observable'); import pageVisibility = require('./core/PageVisibility'); import platform = require('./core/Platform'); import subscription = require('./core/Subscription'); import utils = require('./core/Utils'); import validator = require('./core/Validator'); import accountHelper = require('./helpers/Account'); import blockedNumberHelper = require('./helpers/BlockedNumber'); import callHelper = require('./helpers/Call'); import contactHelper = require('./helpers/Contact'); import contactGroupHelper = require('./helpers/ContactGroup'); import conferencingHelper = require('./helpers/Conferencing'); import countryHelper = require('./helpers/Country'); import deviceHelper = require('./helpers/Device'); import deviceModelHelper = require('./helpers/DeviceModel'); import extensionHelper = require('./helpers/Extension'); import forwardingNumberHelper = require('./helpers/ForwardingNumber'); import languageHelper = require('./helpers/Language'); import locationHelper = require('./helpers/Location'); import messageHelper = require('./helpers/Message'); import phoneNumberHelper = require('./helpers/PhoneNumber'); import presenceHelper = require('./helpers/Presence'); import ringoutHelper = require('./helpers/Ringout'); import serviceHelper = require('./helpers/Service'); import shippingMethodHelper = require('./helpers/ShippingMethod'); import stateHelper = require('./helpers/State'); import timezoneHelper = require('./helpers/Timezone'); import promise = require('es6-promise'); import pubnub = require('pubnub'); class RCSDK { public static version = '1.3.2'; public static url = { sandbox: 'https://platform.devtest.ringcentral.com', production: 'https://platform.ringcentral.com' }; private static injections = { localStorage: (typeof(localStorage) !== 'undefined' ? localStorage : require('dom-' + 'storage')), // Node only Promise: typeof(Promise) !== 'undefined' ? Promise : (promise.Promise || promise), PUBNUB: pubnub, XHR: () => { try { return new XMLHttpRequest(); } catch (e) {} try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e1) {} try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e2) {} try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e3) {} try { return new (require('xhr' + '2'))(); } catch (e4) {} // Node only throw new Error("This browser does not support XMLHttpRequest."); }, pubnubMock: pubnubMock, xhrMock: xhrMock }; private _context:context.Context; constructor(options?:{ server:string; appKey:string; appSecret:string; cachePrefix?:string; }) { options = options || {}; this._context = context.$get(RCSDK.injections); this.getCache() .setPrefix(options.cachePrefix || ''); this.getPlatform() .setServer(options.server || '') .setCredentials(options.appKey || '', options.appSecret || ''); //TODO Link Platform events with Subscriptions and the rest } // Internals getContext() { return this._context; } // Core getAjaxObserver() { return ajaxObserver.$get(this.getContext()); } getXhrResponse() { return xhrResponse.$get(this.getContext()); } getPlatform() { return platform.$get(this.getContext()); } getCache() { return cache.$get(this.getContext()); } getSubscription() { return subscription.$get(this.getContext()); } getPageVisibility() { return pageVisibility.$get(this.getContext()); } getHelper() { return helper.$get(this.getContext()); } getObservable() { return observable.$get(this.getContext()); } getValidator() { return validator.$get(this.getContext()); } getLog() { return log.$get(this.getContext()); } getUtils() { return utils.$get(this.getContext()); } getList() { return list.$get(this.getContext()); } // Helpers getCountryHelper() { return countryHelper.$get(this.getContext()); } getDeviceModelHelper() { return deviceModelHelper.$get(this.getContext()); } getLanguageHelper() { return languageHelper.$get(this.getContext()); } getLocationHelper() { return locationHelper.$get(this.getContext()); } getShippingMethodHelper() { return shippingMethodHelper.$get(this.getContext()); } getStateHelper() { return stateHelper.$get(this.getContext()); } getTimezoneHelper() { return timezoneHelper.$get(this.getContext()); } getAccountHelper() { return accountHelper.$get(this.getContext()); } getBlockedNumberHelper() { return blockedNumberHelper.$get(this.getContext()); } getCallHelper() { return callHelper.$get(this.getContext()); } getConferencingHelper() { return conferencingHelper.$get(this.getContext()); } getContactHelper() { return contactHelper.$get(this.getContext()); } getContactGroupHelper() { return contactGroupHelper.$get(this.getContext()); } getDeviceHelper() { return deviceHelper.$get(this.getContext()); } getExtensionHelper() { return extensionHelper.$get(this.getContext()); } getForwardingNumberHelper() { return forwardingNumberHelper.$get(this.getContext()); } getMessageHelper() { return messageHelper.$get(this.getContext()); } getPhoneNumberHelper() { return phoneNumberHelper.$get(this.getContext()); } getPresenceHelper() { return presenceHelper.$get(this.getContext()); } getRingoutHelper() { return ringoutHelper.$get(this.getContext()); } getServiceHelper() { return serviceHelper.$get(this.getContext()); } } export = RCSDK;