nginxsonarrradarrplexorganizrdashboardnzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotato
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.6 KiB
118 lines
3.6 KiB
<?php
|
|
/**
|
|
* Nexmo Client Library for PHP
|
|
*
|
|
* @copyright Copyright (c) 2016 Nexmo, Inc. (http://nexmo.com)
|
|
* @license https://github.com/Nexmo/nexmo-php/blob/master/LICENSE.txt MIT License
|
|
*/
|
|
|
|
namespace Nexmo\Insights;
|
|
|
|
use Nexmo\Client\ClientAwareInterface;
|
|
use Nexmo\Client\ClientAwareTrait;
|
|
use Nexmo\Client\Exception;
|
|
use Zend\Diactoros\Request;
|
|
|
|
/**
|
|
* Class Client
|
|
*/
|
|
class Client implements ClientAwareInterface
|
|
{
|
|
use ClientAwareTrait;
|
|
|
|
public function basic($number)
|
|
{
|
|
$insightsResults = $this->makeRequest('/ni/basic/json', $number);
|
|
|
|
$basic = new Basic($insightsResults['national_format_number']);
|
|
$basic->jsonUnserialize($insightsResults);
|
|
return $basic;
|
|
}
|
|
|
|
public function standardCNam($number)
|
|
{
|
|
$insightsResults = $this->makeRequest('/ni/standard/json', $number, ['cnam' => 'true']);
|
|
$standard = new StandardCnam($insightsResults['national_format_number']);
|
|
$standard->jsonUnserialize($insightsResults);
|
|
return $standard;
|
|
}
|
|
|
|
public function advancedCnam($number)
|
|
{
|
|
$insightsResults = $this->makeRequest('/ni/advanced/json', $number, ['cnam' => 'true']);
|
|
$standard = new AdvancedCnam($insightsResults['national_format_number']);
|
|
$standard->jsonUnserialize($insightsResults);
|
|
return $standard;
|
|
}
|
|
|
|
public function standard($number, $useCnam=false)
|
|
{
|
|
$insightsResults = $this->makeRequest('/ni/standard/json', $number);
|
|
$standard = new Standard($insightsResults['national_format_number']);
|
|
$standard->jsonUnserialize($insightsResults);
|
|
return $standard;
|
|
}
|
|
|
|
public function advanced($number)
|
|
{
|
|
$insightsResults = $this->makeRequest('/ni/advanced/json', $number);
|
|
$advanced = new Advanced($insightsResults['national_format_number']);
|
|
$advanced->jsonUnserialize($insightsResults);
|
|
return $advanced;
|
|
}
|
|
|
|
public function advancedAsync($number, $webhook)
|
|
{
|
|
// 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]);
|
|
}
|
|
|
|
public function makeRequest($path, $number, $additionalParams = [])
|
|
{
|
|
if ($number instanceof Number)
|
|
{
|
|
$number = $number->getMsisdn();
|
|
}
|
|
|
|
$queryString = http_build_query([
|
|
'number' => $number,
|
|
] + $additionalParams);
|
|
|
|
$request = new Request(
|
|
$this->getClient()->getApiUrl(). $path.'?'.$queryString,
|
|
'GET',
|
|
'php://temp',
|
|
[
|
|
'Accept' => 'application/json'
|
|
]
|
|
);
|
|
|
|
$response = $this->client->send($request);
|
|
|
|
$insightsResults = json_decode($response->getBody()->getContents(), true);
|
|
|
|
if('200' != $response->getStatusCode()){
|
|
throw $this->getException($response);
|
|
}
|
|
|
|
return $insightsResults;
|
|
}
|
|
|
|
protected function getException(ResponseInterface $response)
|
|
{
|
|
$body = json_decode($response->getBody()->getContents(), true);
|
|
$status = $response->getStatusCode();
|
|
|
|
if($status >= 400 AND $status < 500) {
|
|
$e = new Exception\Request($body['error-code-label'], $status);
|
|
} elseif($status >= 500 AND $status < 600) {
|
|
$e = new Exception\Server($body['error-code-label'], $status);
|
|
} else {
|
|
$e = new Exception\Exception('Unexpected HTTP Status Code');
|
|
throw $e;
|
|
}
|
|
|
|
return $e;
|
|
}
|
|
}
|
|
|