EVOLUTION-MANAGER
Edit File: Response.php
<?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); } }