Viewing file: Client.php (6.86 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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\Application;
use Exception; 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\Exception as ClientException; use Vonage\Entity\CollectionInterface; use Vonage\Entity\Hydrator\ArrayHydrator; use Vonage\Entity\Hydrator\HydratorInterface; use Vonage\Entity\IterableAPICollection; use Vonage\Entity\IterableServiceShimTrait;
use function is_null; use function trigger_error;
class Client implements ClientAwareInterface, CollectionInterface, APIClient { use ClientAwareTrait; use IterableServiceShimTrait;
/** * @var APIResource */ protected $api;
/** * @var HydratorInterface */ protected $hydrator;
public function __construct(APIResource $api = null, HydratorInterface $hydrator = null) { $this->api = $api; $this->hydrator = $hydrator;
// Shim to handle BC with old constructor // Will remove in v3 if (is_null($this->hydrator)) { $this->hydrator = new Hydrator(); } }
/** * Shim to handle older instantiations of this class * 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()) ->setBaseUri('/v2/applications') ->setCollectionName('applications'); $this->api = $api; }
return $this->api; }
/** * @deprecated Use an IterableAPICollection object instead */ public static function getCollectionName(): string { return 'applications'; }
/** * @deprecated Use an IterableAPICollection object instead */ public static function getCollectionPath(): string { return '/v2/' . self::getCollectionName(); }
/** * Returns the specified application * * @throws ClientExceptionInterface * @throws ClientException */ public function get($application): Application { if ($application instanceof Application) { trigger_error( "Passing a Application object to Vonage\\Application\\Client::get is deprecated, ' . 'please pass the String ID instead.", E_USER_DEPRECATED ); $application = $application->getId(); }
$data = $this->getApiResource()->get($application); $application = new Application(); $application->fromArray($data);
return $application; }
public function getAll(): IterableAPICollection { $response = $this->api->search(); $response->setApiResource(clone $this->api);
$hydrator = new ArrayHydrator(); $hydrator->setPrototype(new Application());
$response->setHydrator($hydrator); return $response; }
/** * Creates and saves a new Application * * @throws ClientExceptionInterface * @throws ClientException * @throws Exception */ public function create($application): Application { if (!($application instanceof Application)) { trigger_error( 'Passing an array to Vonage\Application\Client::create() is deprecated, ' . 'please pass an Application object instead.', E_USER_DEPRECATED ); $application = $this->fromArray($application); }
// Avoids a mishap in the API where an ID can be set during creation $data = $application->toArray(); unset($data['id']);
$response = $this->getApiResource()->create($data); $application = $this->hydrator->hydrate($response);
return $application; }
/** * @throws ClientExceptionInterface * @throws ClientException * * @deprecated Use `create()` instead */ public function post($application): Application { trigger_error( 'Vonage\Application\Client::post() has been deprecated in favor of the create() method', E_USER_DEPRECATED );
return $this->create($application); }
/** * Saves an existing application * * @throws ClientExceptionInterface * @throws ClientException * @throws Exception */ public function update($application, ?string $id = null): Application { if (!($application instanceof Application)) { trigger_error( 'Passing an array to Vonage\Application\Client::update() is deprecated, ' . 'please pass an Application object instead.', E_USER_DEPRECATED );
$application = $this->fromArray($application); }
if (is_null($id)) { $id = $application->getId(); } else { trigger_error( 'Passing an ID to Vonage\Application\Client::update() is deprecated ' . 'and will be removed in a future release', E_USER_DEPRECATED ); }
$data = $this->getApiResource()->update($id, $application->toArray()); $application = $this->hydrator->hydrate($data);
return $application; }
/** * @throws ClientExceptionInterface * @throws ClientException * * @deprecated Use `update()` instead */ public function put($application, ?string $id = null): Application { trigger_error( 'Vonage\Application\Client::put() has been deprecated in favor of the update() method', E_USER_DEPRECATED );
return $this->update($application, $id); }
/** * Deletes an application from the Vonage account * * @throws ClientExceptionInterface * @throws ClientException */ public function delete($application): bool { if ($application instanceof Application) { trigger_error( 'Passing an Application to Vonage\Application\Client::delete() is deprecated, ' . 'please pass a string ID instead', E_USER_DEPRECATED ); $id = $application->getId(); } else { $id = $application; }
$this->getApiResource()->delete($id);
return true; }
/** * @throws Exception * * @deprecated Use Vonage\Application\Hydrator directly instead */ protected function fromArray(array $array): Application { return $this->hydrator->hydrate($array); } }
|