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\CloudMonitoring\Resource;
use OpenCloud\Common\Exceptions;
use OpenCloud\Common\Http\Message\Formatter;
use OpenCloud\Common\PersistentObject;
abstract class AbstractResource extends PersistentObject
{
public function createJson()
{
foreach (static::$requiredKeys as $requiredKey) {
if (!$this->getProperty($requiredKey)) {
throw new Exceptions\CreateError(sprintf(
"%s is required to create a new %s", $requiredKey, get_class()
));
}
}
$object = new \stdClass;
foreach (static::$emptyObject as $key) {
if ($property = $this->getProperty($key)) {
$object->$key = $property;
}
}
return $object;
}
protected function updateJson($params = array())
{
$object = (object) $params;
foreach (static::$requiredKeys as $requiredKey) {
if (!$this->getProperty($requiredKey)) {
throw new Exceptions\UpdateError(sprintf(
"%s is required to update a %s", $requiredKey, get_class($this)
));
}
}
return $object;
}
public function listAll()
{
return $this->getService()->collection(get_class($this), $this->url());
}
public function testParams($params = array(), $debug = false)
{
$json = json_encode((object) $params);
$response = $this->getService()
->getClient()
->post($this->testUrl($debug), self::getJsonHeader(), $json)
->send();
return Formatter::decode($response);
}
public function test($debug = false)
{
$json = json_encode($this->updateJson());
$this->checkJsonError();
$response = $this->getClient()
->post($this->testExistingUrl($debug), self::getJsonHeader(), $json)
->send();
return Formatter::decode($response);
}
}