1 | <?php |
||
11 | class HalRenderer implements RenderInterface |
||
12 | { |
||
13 | /** |
||
14 | * @var Reader |
||
15 | */ |
||
16 | private $reader; |
||
17 | |||
18 | 1 | public function __construct(Reader $reader) |
|
22 | |||
23 | /** |
||
24 | * {@inheritdoc} |
||
25 | * |
||
26 | * @throws \RuntimeException |
||
27 | */ |
||
28 | 1 | public function render(ResourceObject $ro) |
|
42 | |||
43 | 1 | private function valuateElements(ResourceObject &$ro) |
|
44 | { |
||
45 | 1 | foreach ($ro->body as $key => &$embeded) { |
|
46 | 1 | if ($embeded instanceof AbstractRequest) { |
|
47 | $isDefferentSchema = $this->isDifferentSchema($ro, $embeded->resourceObject); |
||
48 | if ($isDefferentSchema === true) { |
||
49 | $ro->body['_embedded'][$key] = $embeded()->body; |
||
50 | unset($ro->body[$key]); |
||
51 | |||
52 | continue; |
||
53 | } |
||
54 | unset($ro->body[$key]); |
||
55 | $view = $this->render($embeded()); |
||
56 | $ro->body['_embedded'][$key] = json_decode($view); |
||
57 | } |
||
58 | } |
||
59 | 1 | } |
|
60 | |||
61 | /** |
||
62 | * Return "is different schema" (page <-> app) |
||
63 | */ |
||
64 | private function isDifferentSchema(ResourceObject $parentRo, ResourceObject $childRo) : bool |
||
68 | |||
69 | 1 | private function getReverseMatchedLink(string $uri) : string |
|
73 | |||
74 | 1 | private function getHal(AbstractUri $uri, array $body, array $annotations) : Hal |
|
84 | |||
85 | 1 | private function valuate(ResourceObject $ro) : array |
|
101 | |||
102 | 1 | private function addLinks(array $body, array $annotations, Hal $hal) |
|
112 | } |
||
113 |