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 | 12 | public function onKernelView(GetResponseForControllerResultEvent $event) |
|
75 | |||
76 | /** |
||
77 | * Handle result |
||
78 | * |
||
79 | * @param mixed $result |
||
80 | * @return Response | null |
||
81 | */ |
||
82 | 11 | protected function handleResult($result) |
|
114 | |||
115 | /** |
||
116 | * Handle document Json API view |
||
117 | * |
||
118 | * @param JsonApiDocumentView $view |
||
119 | * @return Response |
||
120 | */ |
||
121 | 1 | protected function handleDocumentView(JsonApiDocumentView $view) |
|
129 | |||
130 | /** |
||
131 | * Handle single object Json API view |
||
132 | * |
||
133 | * @param JsonApiObjectView $view |
||
134 | * @return Response |
||
135 | */ |
||
136 | 4 | protected function handleObjectView(JsonApiObjectView $view): Response |
|
152 | |||
153 | /** |
||
154 | * Handle a callback after a resource-object has created. |
||
155 | * |
||
156 | * @param AbstractJsonApiView $view |
||
157 | * @param ResourceObject $resource |
||
158 | */ |
||
159 | 6 | protected function handleResourceCallback(AbstractJsonApiView $view, ResourceObject $resource) |
|
166 | |||
167 | /** |
||
168 | * Handle a callback after a document has created. |
||
169 | * |
||
170 | * @param AbstractJsonApiView $view |
||
171 | * @param AbstractDocument $document |
||
172 | */ |
||
173 | 6 | protected function handleDocumentCallback(AbstractJsonApiView $view, AbstractDocument $document) |
|
180 | |||
181 | /** |
||
182 | * Handle supposed to be included to document resources |
||
183 | * |
||
184 | * @param AbstractDocument $document |
||
185 | * @param IncludedObjectsAwareInterface $view |
||
186 | */ |
||
187 | 6 | protected function handleIncludedResources(AbstractDocument $document, IncludedObjectsAwareInterface $view) |
|
195 | |||
196 | /** |
||
197 | * Handle object-iterator |
||
198 | * |
||
199 | * @param JsonApiIteratorView $view |
||
200 | * @return Response |
||
201 | */ |
||
202 | 3 | protected function handleIteratorView(JsonApiIteratorView $view): Response |
|
223 | |||
224 | /** |
||
225 | * Handle response data besides of the document itself |
||
226 | * |
||
227 | * @param Response $response |
||
228 | * @param HttpAttributesAwareInterface $view |
||
229 | */ |
||
230 | 7 | protected function handleHttpAttributes(Response $response, HttpAttributesAwareInterface $view) |
|
235 | |||
236 | /** |
||
237 | * Handle object |
||
238 | * |
||
239 | * @param $object |
||
240 | * @return ResourceObject |
||
241 | */ |
||
242 | 7 | protected function handleObject($object): ResourceObject |
|
252 | |||
253 | /** |
||
254 | * Get handler supports given class |
||
255 | * |
||
256 | * @param string $class |
||
257 | * @return ObjectHandlerInterface |
||
258 | * @throws \LogicException |
||
259 | */ |
||
260 | 3 | protected function getHandler(string $class): ObjectHandlerInterface |
|
275 | |||
276 | /** |
||
277 | * Handle single resource object |
||
278 | * |
||
279 | * @param ResourceObject $resource |
||
280 | * @return Response |
||
281 | */ |
||
282 | 1 | protected function handleResource(ResourceObject $resource): Response |
|
289 | |||
290 | /** |
||
291 | * Handle error |
||
292 | * |
||
293 | * @param ErrorObject $error |
||
294 | * @return Response |
||
295 | */ |
||
296 | 1 | protected function handleError(ErrorObject $error): Response |
|
304 | |||
305 | /** |
||
306 | * Create response |
||
307 | * |
||
308 | * @param AbstractDocument $document |
||
309 | * @return Response |
||
310 | */ |
||
311 | 10 | protected function createResponse(AbstractDocument $document): Response |
|
320 | |||
321 | /** |
||
322 | * Encode object into a json-string |
||
323 | * |
||
324 | * @param mixed $object |
||
325 | * @return string |
||
326 | * @throws \LogicException |
||
327 | */ |
||
328 | 10 | protected function encode($object): string |
|
338 | } |