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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
<?php
/**
* PHP OpenCloud library.
*
* @copyright 2014 Rackspace Hosting, Inc. See LICENSE for information.
* @license https://www.apache.org/licenses/LICENSE-2.0
* @author Glen Campbell <glen.campbell@rackspace.com>
* @author Jamie Hannaford <jamie.hannaford@rackspace.com>
*/
namespace OpenCloud\DNS\Resource;
use OpenCloud\Common\PersistentObject;
use OpenCloud\Common\Lang;
use OpenCloud\Common\Exceptions;
use OpenCloud\Common\Http\Message\Formatter;
/**
* The DnsObject class is an extension of the PersistentObject class that
* permits the asynchronous responses used by Cloud DNS
*/
abstract class Object extends PersistentObject
{
/**
* Create() returns an asynchronous response
*
* @param array $params array of key/value pairs
* @return AsyncResponse
*/
public function create($params = array())
{
$body = Formatter::decode(parent::create($params));
return new AsyncResponse($this->getService(), $body);
}
/**
* Update() returns an asynchronous response
*
* @param array $params array of key/value pairs
* @return AsyncResponse
*/
public function update($params = array())
{
$response = parent::update($params);
$body = Formatter::decode($response);
return new AsyncResponse($this->getService(), $body);
}
/**
* Delete() returns an asynchronous response
*
* @param array $params array of key/value pairs
* @return AsyncResponse
*/
public function delete()
{
$body = Formatter::decode(parent::delete());
return new AsyncResponse($this->getService(), $body);
}
/**
* creates the JSON for create
*
* @return stdClass
*/
protected function createJson()
{
if (!$this->getCreateKeys()) {
throw new Exceptions\CreateError(
Lang::translate('Missing [createKeys]')
);
}
return (object) array(
self::jsonCollectionName() => array(
$this->getJson($this->getCreateKeys())
)
);
}
/**
* creates the JSON for update
*
* @return stdClass
*/
protected function updateJson($params = array())
{
if (!$this->getUpdateKeys()) {
throw new Exceptions\UpdateError(
Lang::translate('Missing [updateKeys]')
);
}
return $this->getJson($this->getUpdateKeys());
}
/**
* returns JSON based on $keys
*
* @param array $keys list of items to include
* @return stdClass
*/
private function getJson($keys)
{
$object = new \stdClass;
foreach($keys as $item) {
if (!empty($this->$item)) {
$object->$item = $this->$item;
}
}
return $object;
}
/**
* Retrieve the keys which are required when the object is created.
*
* @return array|false
*/
public function getCreateKeys()
{
return (!empty($this->createKeys)) ? $this->createKeys : false;
}
/**
* Retrieve the keys which are required when the object is updated.
*
* @return array|false
*/
public function getUpdateKeys()
{
return (!empty($this->updateKeys)) ? $this->updateKeys : false;
}
}
|