Telnyx/lib/Telnyx.php
a92694d2
 <?php
 
 namespace Telnyx;
 
 /**
  * Class Telnyx
  *
  * @package Telnyx
  */
 class Telnyx
 {
     // @var string The Telnyx API key to be used for requests.
     public static $apiKey;
 
     // @var string The Telnyx client_id to be used for Connect requests.
     public static $clientId;
 
     // @var string The base URL for the Telnyx API.
     #public static $apiBase = 'https://api.telnyx.com';
     public static $apiBase = 'https://api.telnyx.com';
     
     // @var string|null The version of the Telnyx API to use for requests.
     public static $apiVersion = null;
 
     // @var string|null The account ID for connected accounts requests.
     public static $accountId = null;
 
     // @var string Path to the CA bundle used to verify SSL certificates
     public static $caBundlePath = null;
 
     // @var boolean Defaults to true.
     public static $verifySslCerts = true;
 
     // @var array The application's information (name, version, URL)
     public static $appInfo = null;
 
     // @var Util\LoggerInterface|null The logger to which the library will
     //   produce messages.
     public static $logger = null;
 
     // @var int Maximum number of request retries
     public static $maxNetworkRetries = 0;
 
     // @var boolean Whether client telemetry is enabled. Defaults to false.
     public static $enableTelemetry = false;
 
     // @var float Maximum delay between retries, in seconds
     private static $maxNetworkRetryDelay = 2.0;
 
     // @var float Initial delay between retries, in seconds
     private static $initialNetworkRetryDelay = 0.5;
 
     const VERSION = '0.0.1';
 
     /**
      * @return string The API key used for requests.
      */
     public static function getApiKey()
     {
         return self::$apiKey;
     }
 
     /**
      * @return string The client_id used for Connect requests.
      */
     public static function getClientId()
     {
         return self::$clientId;
     }
 
     /**
      * @return Util\LoggerInterface The logger to which the library will
      *   produce messages.
      */
     public static function getLogger()
     {
         if (self::$logger == null) {
             return new Util\DefaultLogger();
         }
         return self::$logger;
     }
 
     /**
      * @param Util\LoggerInterface $logger The logger to which the library
      *   will produce messages.
      */
     public static function setLogger($logger)
     {
         self::$logger = $logger;
     }
 
     /**
      * Sets the API key to be used for requests.
      *
      * @param string $apiKey
      */
     public static function setApiKey($apiKey)
     {
         self::$apiKey = $apiKey;
     }
 
     /**
      * Sets the client_id to be used for Connect requests.
      *
      * @param string $clientId
      */
     public static function setClientId($clientId)
     {
         self::$clientId = $clientId;
     }
 
     /**
      * @return string The API version used for requests. null if we're using the
      *    latest version.
      */
     public static function getApiVersion()
     {
         return self::$apiVersion;
     }
 
     /**
      * @param string $apiVersion The API version to use for requests.
      */
     public static function setApiVersion($apiVersion)
     {
         self::$apiVersion = $apiVersion;
     }
 
     /**
      * @return string
      */
     private static function getDefaultCABundlePath()
     {
         return realpath(dirname(__FILE__) . '/../data/ca-certificates.crt');
     }
 
     /**
      * @return string
      */
     public static function getCABundlePath()
     {
         return self::$caBundlePath ?: self::getDefaultCABundlePath();
     }
 
     /**
      * @param string $caBundlePath
      */
     public static function setCABundlePath($caBundlePath)
     {
         self::$caBundlePath = $caBundlePath;
     }
 
     /**
      * @return boolean
      */
     public static function getVerifySslCerts()
     {
         return self::$verifySslCerts;
     }
 
     /**
      * @param boolean $verify
      */
     public static function setVerifySslCerts($verify)
     {
         self::$verifySslCerts = $verify;
     }
 
     /**
      * @return string | null The Telnyx account ID for connected account
      *   requests.
      */
     public static function getAccountId()
     {
         return self::$accountId;
     }
 
     /**
      * @param string $accountId The Telnyx account ID to set for connected
      *   account requests.
      */
     public static function setAccountId($accountId)
     {
         self::$accountId = $accountId;
     }
 
     /**
      * @return array | null The application's information
      */
     public static function getAppInfo()
     {
         return self::$appInfo;
     }
 
     /**
      * @param string $appName The application's name
      * @param string $appVersion The application's version
      * @param string $appUrl The application's URL
      */
     public static function setAppInfo($appName, $appVersion = null, $appUrl = null, $appPartnerId = null)
     {
         self::$appInfo = self::$appInfo ?: [];
         self::$appInfo['name'] = $appName;
         self::$appInfo['partner_id'] = $appPartnerId;
         self::$appInfo['url'] = $appUrl;
         self::$appInfo['version'] = $appVersion;
     }
 
     /**
      * @return int Maximum number of request retries
      */
     public static function getMaxNetworkRetries()
     {
         return self::$maxNetworkRetries;
     }
 
     /**
      * @param int $maxNetworkRetries Maximum number of request retries
      */
     public static function setMaxNetworkRetries($maxNetworkRetries)
     {
         self::$maxNetworkRetries = $maxNetworkRetries;
     }
 
     /**
      * @return float Maximum delay between retries, in seconds
      */
     public static function getMaxNetworkRetryDelay()
     {
         return self::$maxNetworkRetryDelay;
     }
 
     /**
      * @return float Initial delay between retries, in seconds
      */
     public static function getInitialNetworkRetryDelay()
     {
         return self::$initialNetworkRetryDelay;
     }
 
     /**
      * @return bool Whether client telemetry is enabled
      */
     public static function getEnableTelemetry()
     {
         return self::$enableTelemetry;
     }
 
     /**
      * @param bool $enableTelemetry Enables client telemetry.
      *
      * Client telemetry enables timing and request metrics to be sent back to Telnyx as an HTTP Header
      * with the current request. This enables Telnyx to do latency and metrics analysis without adding extra
      * overhead (such as extra network calls) on the client.
      */
     public static function setEnableTelemetry($enableTelemetry)
     {
         self::$enableTelemetry = $enableTelemetry;
     }
 }