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;
}
}
|