/** * Converts the give HAL Resource to a plain text representation that can be returned in the response. * * @param string $format * @param \Hal\Resource $resource * * @throws NotAcceptableHttpException * * @return string */ protected function convertResourceToPlainText($format, Resource $resource) { switch ($format) { case 'xml': return (string) $resource->getXML()->asXml(); case 'json': return (string) $resource; default: throw new NotAcceptableHttpException(); } }
/** * @param Resource $embed * @return SimpleXMLElement */ protected function _getEmbRes(Resource $embed) { $resource = $this->_xml->addChild('resource'); return $embed->getXML($resource); }
public function testXML() { $fixture = <<<'EOF' { "_links":{ "self":{ "href":"/orders" }, "next":{ "href":"/orders?page=2" }, "search":{ "href":"/orders?id={order_id}" } }, "_embedded":{ "order":[ { "_links":{ "self":{ "href":"/orders/123" }, "customer":{ "href":"/customer/bob", "title":"Bob Jones <*****@*****.**>" } }, "total":"30.00", "currency":"USD", "status":"shipped", "placed":"2011-01-16", "_embedded":{ "basket":{ "_links":{ "self":{ "href":"/orders/123/basket" } }, "items":[ { "sku":"ABC123", "quantity":2, "price":"9.50" }, { "sku":"GFZ111", "quantity":1, "price":"11.00" } ] } } }, { "_links":{ "self":{ "href":"/orders/124" }, "customer":{ "href":"/customer/jen", "title":"Jen Harris <*****@*****.**>" } }, "total":"20.00", "currency":"USD", "status":"processing", "placed":"2011-01-16", "_embedded":{ "basket":{ "_links":{ "self":{ "href":"/orders/124/basket" } }, "items":[ { "sku":"KLM222", "quantity":1, "price":"9.00" }, { "sku":"HHI50", "quantity":1, "price":"11.00" } ] } } } ] } } EOF; $parentRes = new Resource('/orders'); $parentRes->setLink(new Link('/orders?page=2', 'next'))->setLink(new Link('/orders?id={order_id}', 'search')); $data = array('total' => '30.00', 'currency' => 'USD', 'status' => 'shipped', 'placed' => '2011-01-16'); $embedded1 = new Resource('/orders/123'); $embedded1->setData($data)->setLink(new Link('/customer/bob', 'customer', 'Bob Jones <*****@*****.**>')); $basketItems = array(array('sku' => 'ABC123', 'quantity' => 2, 'price' => '9.50'), array('sku' => 'GFZ111', 'quantity' => 1, 'price' => '11.00')); $basket = new Resource('/orders/123/basket'); $basket->setData('items', $basketItems); $embedded1->setEmbedded('basket', $basket, true); ////////////////////////////////////////////// $data = array('total' => '20.00', 'currency' => 'USD', 'status' => 'processing', 'placed' => '2011-01-16'); $embedded2 = new Resource('/orders/124'); $embedded2->setData($data)->setLink(new Link('/customer/jen', 'customer', 'Jen Harris <*****@*****.**>')); ///////////////////////////////////// $basketItems = array(array('sku' => 'KLM222', 'quantity' => 1, 'price' => "9.00"), array('sku' => 'HHI50', 'quantity' => 1, 'price' => "11.00")); $basket2 = new Resource('/orders/124/basket'); $basket2->setData('items', $basketItems); $embedded2->setEmbedded('basket', $basket2, true); $parentRes->setEmbedded('order', $embedded1)->setEmbedded('order', $embedded2); /* @export as XML * * @need a test for this eventually; */ $xml = $parentRes->getXML()->asXML(); $this->assertEquals(json_decode($fixture), json_decode((string) $parentRes)); }