ok
Direktori : /home2/selectio/public_html/myclassicfit.com/vendor/vonage/client-core/src/Insights/ |
Current File : /home2/selectio/public_html/myclassicfit.com/vendor/vonage/client-core/src/Insights/Client.php |
<?php /** * Vonage Client Library for PHP * * @copyright Copyright (c) 2016-2020 Vonage, Inc. (http://vonage.com) * @license https://github.com/Vonage/vonage-php-sdk-core/blob/master/LICENSE.txt Apache License 2.0 */ declare(strict_types=1); namespace Vonage\Insights; use Psr\Http\Client\ClientExceptionInterface; use Vonage\Client\APIClient; use Vonage\Client\APIResource; use Vonage\Client\ClientAwareInterface; use Vonage\Client\ClientAwareTrait; use Vonage\Client\Exception as ClientException; use Vonage\Entity\Filter\KeyValueFilter; use Vonage\Numbers\Number; use function is_null; /** * Class Client */ class Client implements ClientAwareInterface, APIClient { /** * @deprecated This client no longer needs to be ClientAware */ use ClientAwareTrait; /** * @var APIResource */ protected $api; public function __construct(APIResource $api = null) { $this->api = $api; } /** * Shim to handle older instantiations of this class * * @deprecated Will change in v3 to just return the required API object */ public function getApiResource(): APIResource { if (is_null($this->api)) { $api = new APIResource(); $api->setClient($this->getClient()) ->setIsHAL(false); $this->api = $api; } return clone $this->api; } /** * @param $number * * @throws ClientExceptionInterface * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server */ public function basic($number): Basic { $insightsResults = $this->makeRequest('/ni/basic/json', $number); $basic = new Basic($insightsResults['national_format_number']); $basic->fromArray($insightsResults); return $basic; } /** * @param $number * * @throws ClientExceptionInterface * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server */ public function standardCNam($number): StandardCnam { $insightsResults = $this->makeRequest('/ni/standard/json', $number, ['cnam' => 'true']); $standard = new StandardCnam($insightsResults['national_format_number']); $standard->fromArray($insightsResults); return $standard; } /** * @param $number * * @throws ClientExceptionInterface * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server */ public function advancedCnam($number): AdvancedCnam { $insightsResults = $this->makeRequest('/ni/advanced/json', $number, ['cnam' => 'true']); $standard = new AdvancedCnam($insightsResults['national_format_number']); $standard->fromArray($insightsResults); return $standard; } /** * @param $number * * @throws ClientExceptionInterface * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server */ public function standard($number): Standard { $insightsResults = $this->makeRequest('/ni/standard/json', $number); $standard = new Standard($insightsResults['national_format_number']); $standard->fromArray($insightsResults); return $standard; } /** * @param $number * * @throws ClientExceptionInterface * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server */ public function advanced($number): Advanced { $insightsResults = $this->makeRequest('/ni/advanced/json', $number); $advanced = new Advanced($insightsResults['national_format_number']); $advanced->fromArray($insightsResults); return $advanced; } /** * @param $number * * @throws ClientExceptionInterface * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server */ public function advancedAsync($number, string $webhook): void { // This method does not have a return value as it's async. If there is no exception thrown // We can assume that everything is fine $this->makeRequest('/ni/advanced/async/json', $number, ['callback' => $webhook]); } /** * Common code for generating a request * * @param $number * * @throws ClientException\Exception * @throws ClientException\Request * @throws ClientException\Server * @throws ClientExceptionInterface */ public function makeRequest(string $path, $number, array $additionalParams = []): array { $api = $this->getApiResource(); $api->setBaseUri($path); if ($number instanceof Number) { $number = $number->getMsisdn(); } $query = ['number' => $number] + $additionalParams; $result = $api->search(new KeyValueFilter($query)); $data = $result->getPageData(); // check the status field in response (HTTP status is 200 even for errors) if ((int)$data['status'] !== 0) { throw $this->getNIException($data); } return $data; } /** * Parses response body for an error and throws it * This API returns a 200 on an error, so does not get caught by the normal * error checking. We check for a status and message manually. */ protected function getNIException(array $body): ClientException\Request { $status = $body['status']; $message = "Error: "; if (isset($body['status_message'])) { $message .= $body['status_message']; } // the advanced async endpoint returns status detail in another field // this is a workaround if (isset($body['error_text'])) { $message .= $body['error_text']; } return new ClientException\Request($message, $status); } }