/home/techb158/ileadtechnology.com/SSM/vendor/nexmo/client-core/src/Application
Edit: /home/techb158/ileadtechnology.com/SSM/vendor/nexmo/client-core/src/Application/Client.php (9665B)
jsonUnserialize($data);
return $application;
}
public function get($application)
{
if (!($application instanceof Application)) {
$application = new Application($application);
}
$request = new Request(
$this->getClient()->getApiUrl() . $this->getCollectionPath() . '/' . $application->getId(),
'GET',
'php://memory',
['Content-Type' => 'application/json']
);
$application->setRequest($request);
$response = $this->client->send($request);
$application->setResponse($response);
if ($response->getStatusCode() != '200') {
throw $this->getException($response, $application);
}
return $application;
}
public function create($application)
{
return $this->post($application);
}
public function post($application)
{
if (!($application instanceof Application)) {
$application = $this->createFromArray($application);
}
$body = $application->getRequestData(false);
$request = new Request(
$this->getClient()->getApiUrl() . $this->getCollectionPath(),
'POST',
'php://temp',
['Content-Type' => 'application/json']
);
$request->getBody()->write(json_encode($body));
$application->setRequest($request);
$response = $this->client->send($request);
$application->setResponse($response);
if ($response->getStatusCode() != '201') {
throw $this->getException($response, $application);
}
return $application;
}
public function update($application, $id = null)
{
return $this->put($application, $id);
}
public function put($application, $id = null)
{
if (!($application instanceof Application)) {
$application = $this->createFromArray($application);
}
if (is_null($id)) {
$id = $application->getId();
}
$body = $application->getRequestData(false);
$request = new Request(
$this->getClient()->getApiUrl() . $this->getCollectionPath() . '/' . $id,
'PUT',
'php://temp',
['Content-Type' => 'application/json']
);
$request->getBody()->write(json_encode($body));
$application->setRequest($request);
$response = $this->client->send($request);
$application->setResponse($response);
if ($response->getStatusCode() != '200') {
throw $this->getException($response, $application);
}
return $application;
}
public function delete($application)
{
if (($application instanceof Application)) {
$id = $application->getId();
} else {
$id = $application;
}
$request = new Request(
$this->getClient()->getApiUrl(). $this->getCollectionPath() . '/' . $id,
'DELETE',
'php://temp',
['Content-Type' => 'application/json']
);
if ($application instanceof Application) {
$application->setRequest($request);
}
$response = $this->client->send($request);
if ($application instanceof Application) {
$application->setResponse($response);
}
if ($response->getStatusCode() != '204') {
throw $this->getException($response, $application);
}
return true;
}
protected function getException(ResponseInterface $response, $application = null)
{
$body = json_decode($response->getBody()->getContents(), true);
$status = $response->getStatusCode();
// Handle new style errors
$e = null;
try {
ApiErrorHandler::check($body, $status);
} catch (Exception\Exception $e) {
//todo use interfaces here
if (($application instanceof Application) and (($e instanceof Exception\Request) or ($e instanceof Exception\Server))) {
$e->setEntity($application);
}
}
return $e;
}
protected function createFromArray($array)
{
if (isset($array['answer_url']) || isset($array['event_url'])) {
return $this->createFromArrayV1($array);
}
return $this->createFromArrayV2($array);
}
protected function createFromArrayV1($array)
{
if (!is_array($array)) {
throw new \RuntimeException('application must implement `' . ApplicationInterface::class . '` or be an array`');
}
foreach (['name',] as $param) {
if (!isset($array[$param])) {
throw new \InvalidArgumentException('missing expected key `' . $param . '`');
}
}
$application = new Application();
$application->setName($array['name']);
// Public key?
if (isset($array['public_key'])) {
$application->setPublicKey($array['public_key']);
}
// Voice
foreach (['event', 'answer'] as $type) {
if (isset($array[$type . '_url'])) {
$method = isset($array[$type . '_method']) ? $array[$type . '_method'] : null;
$application->getVoiceConfig()->setWebhook($type . '_url', new Webhook($array[$type . '_url'], $method));
}
}
// Messages
foreach (['status', 'inbound'] as $type) {
if (isset($array[$type . '_url'])) {
$method = isset($array[$type . '_method']) ? $array[$type . '_method'] : null;
$application->getMessagesConfig()->setWebhook($type . '_url', new Webhook($array[$type . '_url'], $method));
}
}
// RTC
foreach (['event'] as $type) {
if (isset($array[$type . '_url'])) {
$method = isset($array[$type . '_method']) ? $array[$type . '_method'] : null;
$application->getRtcConfig()->setWebhook($type . '_url', new Webhook($array[$type . '_url'], $method));
}
}
// VBC
if (isset($array['vbc']) && $array['vbc']) {
$application->getVbcConfig()->enable();
}
return $application;
}
protected function createFromArrayV2($array)
{
if (!is_array($array)) {
throw new \RuntimeException('application must implement `' . ApplicationInterface::class . '` or be an array`');
}
foreach (['name',] as $param) {
if (!isset($array[$param])) {
throw new \InvalidArgumentException('missing expected key `' . $param . '`');
}
}
$application = new Application();
$application->setName($array['name']);
// Is there a public key?
if (isset($array['keys']['public_key'])) {
$application->setPublicKey($array['keys']['public_key']);
}
// How about capabilities?
if (!isset($array['capabilities'])) {
return $application;
}
$capabilities = $array['capabilities'];
// Handle voice
if (isset($capabilities['voice'])) {
$voiceCapabilities = $capabilities['voice']['webhooks'];
foreach (['answer', 'event'] as $type) {
$application->getVoiceConfig()->setWebhook($type.'_url', new Webhook(
$voiceCapabilities[$type.'_url']['address'],
$voiceCapabilities[$type.'_url']['http_method']
));
}
}
// Handle messages
if (isset($capabilities['messages'])) {
$messagesCapabilities = $capabilities['messages']['webhooks'];
foreach (['status', 'inbound'] as $type) {
$application->getMessagesConfig()->setWebhook($type.'_url', new Webhook(
$messagesCapabilities[$type.'_url']['address'],
$messagesCapabilities[$type.'_url']['http_method']
));
}
}
// Handle RTC
if (isset($capabilities['rtc'])) {
$rtcCapabilities = $capabilities['rtc']['webhooks'];
foreach (['event'] as $type) {
$application->getRtcConfig()->setWebhook($type.'_url', new Webhook(
$rtcCapabilities[$type.'_url']['address'],
$rtcCapabilities[$type.'_url']['http_method']
));
}
}
// Handle VBC
if (isset($capabilities['vbc'])) {
$application->getVbcConfig()->enable();
}
return $application;
}
}