MINI Sh3ll
<?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\Network\Number;
use Nexmo\Client\Response\Response as BaseResponse;
use Nexmo\Client\Response\ResponseInterface;
class Response extends BaseResponse implements ResponseInterface
{
protected $callbacks = array();
public function __construct(array $data, $callbacks = array())
{
//add expected keys
$this->expected = array_merge($this->expected, array(
'request_id', 'number', 'request_price', 'remaining_balance', 'callback_total_parts'
));
parent::__construct($data);
foreach($callbacks as $callback){
if(!($callback instanceof Callback)){
throw new \InvalidArgumentException('callback must be of type: Nexmo\Network\Number\Callback');
}
if($callback->getId() !== $this->getId()){
throw new \InvalidArgumentException('callback id must match request id');
}
}
$this->callbacks = $callbacks;
}
public function getCallbackTotal()
{
return $this->data['callback_total_parts'];
}
public function isComplete()
{
return count($this->callbacks) == $this->getCallbackTotal();
}
public function getPrice()
{
return $this->data['request_price'];
}
public function getBalance()
{
return $this->data['remaining_balance'];
}
public function getNumber()
{
return $this->data['number'];
}
public function getId()
{
return $this->data['request_id'];
}
public function getStatus()
{
return $this->data['status'];
}
public function __call($name, $args)
{
if(empty($this->callbacks)){
throw new \BadMethodCallException('can not check for response data without callback data');
}
foreach($this->callbacks as $callback){
if($last = $callback->$name()){
return $last;
}
}
return $last;
}
public function getCallbacks()
{
return $this->callbacks;
}
public static function addCallback(Response $response, Callback $callback)
{
$callbacks = $response->getCallbacks();
$callbacks[] = $callback;
return new static($response->getData(), $callbacks);
}
}
OHA YOOOO