/** * Returns all users in a single collection resource. * * @param string[] $options * * @return Resource */ public function getCollection(array $options = array()) { /** @var UserEntity[] $collection */ $collection = $this->userManager->findUsers(); $resource = new Resource($this->generateBrowseUrl(), array('count' => count($collection))); foreach ($collection as $element) { $resource->setEmbedded('user', $this->createResourceFromUser($element)); } return $resource; }
/** * @param array $resourceInfo * @return Resource */ public function process(array $resourceInfo) { $resource = new Resource($resourceInfo['links']['self'], $resourceInfo['data']); unset($resourceInfo['links']['self']); foreach ($resourceInfo['links'] as $key => $href) { $resource->setLink(new Link($href, $key)); } if (isset($resourceInfo['embedded'])) { foreach ($resourceInfo['embedded'] as $rel) { foreach ($rel as $rel => $data) { $resource->setEmbedded($rel, new Resource($data['links']['self'], $data['data'])); } } } return $resource; }
public function testTemplatedLink() { $fixture = <<<'EOF' { "_links":{ "self":{ "href":"/dogs" }, "search":{ "href":"/dogs?q={text}", "templated": true } }, "_embedded":{ "dog":[ { "_links":{ "self":{ "href":"/dogs\/1" } }, "id":"1", "name":"tiber", "color":"black" }, { "_links":{ "self":{ "href":"/dogs\/2" } }, "id":"2", "name":"sally", "color":"white" }, { "_links":{ "self":{ "href":"/dogs\/3" } }, "id":"3", "name":"fido", "color":"gray" } ] } } EOF; $parent = new Resource('/dogs'); /* Add any relevent links */ $parent->setLink(new Link('/dogs?q={text}', 'search', null, null, null, true)); $dogs[1] = new Resource('/dogs/1'); $dogs[1]->setData(array('id' => '1', 'name' => 'tiber', 'color' => 'black')); $dogs[2] = new Resource('/dogs/2', array('id' => '2', 'name' => 'sally', 'color' => 'white')); $dogs[3] = new Resource('/dogs/3', array('id' => '3', 'name' => 'fido', 'color' => 'gray')); /* Add the embedded resources */ foreach ($dogs as $dog) { $parent->setEmbedded('dog', $dog); } $this->assertEquals(json_decode($fixture), json_decode((string) $parent)); }
/** * This tests adding an empty resource */ public function testEmptyResource() { $fixture = <<<'EOF' { "_links":{ "self":{ "href":"/dogs" }, "search":{ "href":"/dogs?q={text}" } }, "_embedded":{ "dog":[] } } EOF; $parent = new Resource('/dogs'); $parent->setLink(new Link('/dogs?q={text}', 'search')); $parent->setEmbedded('dog', null); $this->assertEquals(json_decode($fixture), json_decode((string) $parent)); }