1 | <?php |
||
30 | class JsonApiViewListener |
||
31 | { |
||
32 | /** |
||
33 | * Object-handlers |
||
34 | * |
||
35 | * @var ObjectHandlerInterface[] |
||
36 | */ |
||
37 | protected $objectHandlers = []; |
||
38 | |||
39 | /** |
||
40 | * Object-handlers resolved by supported class |
||
41 | * |
||
42 | * @var ObjectHandlerInterface[] |
||
43 | */ |
||
44 | protected $resolvedObjectHandlers = []; |
||
45 | |||
46 | /** |
||
47 | * Add object-handler |
||
48 | * |
||
49 | * @param ObjectHandlerInterface $handler |
||
50 | */ |
||
51 | 2 | public function addObjectHandler(ObjectHandlerInterface $handler) |
|
55 | |||
56 | /** |
||
57 | * On Kernel View event handler |
||
58 | * |
||
59 | * @param GetResponseForControllerResultEvent $event |
||
60 | */ |
||
61 | 8 | public function onKernelView(GetResponseForControllerResultEvent $event) |
|
75 | |||
76 | /** |
||
77 | * Handle result |
||
78 | * |
||
79 | * @param mixed $result |
||
80 | * @return Response | null |
||
81 | */ |
||
82 | 7 | public function handleResult($result) |
|
111 | |||
112 | /** |
||
113 | * Handle document Json API view |
||
114 | * |
||
115 | * @param JsonApiDocumentView $view |
||
116 | * @return Response |
||
117 | */ |
||
118 | 1 | protected function handleDocumentView(JsonApiDocumentView $view) |
|
126 | |||
127 | /** |
||
128 | * Handle single object Json API view |
||
129 | * |
||
130 | * @param JsonApiObjectView $view |
||
131 | * @return Response |
||
132 | */ |
||
133 | 2 | protected function handleObjectView(JsonApiObjectView $view): Response |
|
147 | |||
148 | /** |
||
149 | * Handle supposed to be included to document resources |
||
150 | * |
||
151 | * @param AbstractDocument $document |
||
152 | * @param IncludedObjectsAwareInterface $view |
||
153 | */ |
||
154 | 2 | protected function handleIncludedResources(AbstractDocument $document, IncludedObjectsAwareInterface $view) |
|
162 | |||
163 | /** |
||
164 | * Handle object-iterator |
||
165 | * |
||
166 | * @param JsonApiIteratorView $view |
||
167 | * @return Response |
||
168 | */ |
||
169 | 1 | protected function handleIteratorView(JsonApiIteratorView $view): Response |
|
187 | |||
188 | /** |
||
189 | * Handle response data besides of the document itself |
||
190 | * |
||
191 | * @param Response $response |
||
192 | * @param HttpAttributesAwareInterface $view |
||
193 | */ |
||
194 | 3 | protected function handleHttpAttributes(Response $response, HttpAttributesAwareInterface $view) |
|
199 | |||
200 | /** |
||
201 | * Handle object |
||
202 | * |
||
203 | * @param $object |
||
204 | * @return ResourceObject |
||
205 | */ |
||
206 | 3 | protected function handleObject($object): ResourceObject |
|
216 | |||
217 | /** |
||
218 | * Get handler supports given class |
||
219 | * |
||
220 | * @param string $class |
||
221 | * @return ObjectHandlerInterface |
||
222 | * @throws \LogicException |
||
223 | */ |
||
224 | 3 | protected function getHandler(string $class): ObjectHandlerInterface |
|
239 | |||
240 | /** |
||
241 | * Handle single resource object |
||
242 | * |
||
243 | * @param ResourceObject $resource |
||
244 | * @return Response |
||
245 | */ |
||
246 | 1 | protected function handleResource(ResourceObject $resource): Response |
|
253 | |||
254 | /** |
||
255 | * Handle error |
||
256 | * |
||
257 | * @param ErrorObject $error |
||
258 | * @return Response |
||
259 | */ |
||
260 | 1 | protected function handleError(ErrorObject $error): Response |
|
268 | |||
269 | /** |
||
270 | * Create response |
||
271 | * |
||
272 | * @param AbstractDocument $document |
||
273 | * @return Response |
||
274 | */ |
||
275 | 6 | protected function createResponse(AbstractDocument $document): Response |
|
284 | |||
285 | /** |
||
286 | * Encode object into a json-string |
||
287 | * |
||
288 | * @param mixed $object |
||
289 | * @return string |
||
290 | * @throws \LogicException |
||
291 | */ |
||
292 | 6 | protected function encode($object): string |
|
302 | } |