1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
<?php
namespace OpenCloud\DNS\Resource;
use OpenCloud\Common\Exceptions;
use OpenCloud\Common\Http\Message\Formatter;
use OpenCloud\Common\Lang;
use OpenCloud\Common\Resource\PersistentResource;
abstract class AbstractResource extends PersistentResource
{
public function create($params = array())
{
$body = Formatter::decode(parent::create($params));
return new AsyncResponse($this->getService(), $body);
}
public function update($params = array())
{
$response = parent::update($params);
$body = Formatter::decode($response);
return new AsyncResponse($this->getService(), $body);
}
public function delete()
{
$body = Formatter::decode(parent::delete());
return new AsyncResponse($this->getService(), $body);
}
protected function createJson()
{
if (!$this->getCreateKeys()) {
throw new Exceptions\CreateError(
Lang::translate('Missing [createKeys]')
);
}
return (object) array(
self::jsonCollectionName() => array(
$this->getJson($this->getCreateKeys())
)
);
}
protected function updateJson($params = array())
{
if (!$this->getUpdateKeys()) {
throw new Exceptions\UpdateError(
Lang::translate('Missing [updateKeys]')
);
}
return $this->getJson($this->getUpdateKeys());
}
private function getJson($keys)
{
$object = new \stdClass;
foreach ($keys as $item) {
if (!empty($this->$item)) {
$object->$item = $this->$item;
}
}
return $object;
}
public function getCreateKeys()
{
return (!empty($this->createKeys)) ? $this->createKeys : false;
}
public function getUpdateKeys()
{
return (!empty($this->updateKeys)) ? $this->updateKeys : false;
}
}