Object.php
3.32 KB
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;
}
}