public function onKernelView(GetResponseForControllerResultEvent $event)
{
$controllerResult = $event->getControllerResult();
if ($controllerResult instanceof Response) {
return;
}
$request = $event->getRequest();
$format = $request->attributes->get('_api_format');
if (static::FORMAT !== $format) {
return;
}
switch ($request->getMethod()) {
case Request::METHOD_POST:
$status = 201;
break;
case Request::METHOD_DELETE:
$status = 204;
break;
default:
$status = 200;
break;
}
$columns = [];
if ($event->getRequest()->query->has('columns')) {
$columns = json_decode($event->getRequest()->query->get('columns'));
}
$data = $this->flatten($controllerResult, $columns);
$file = tempnam(sys_get_temp_dir(), 'partkeepr_export');
unlink($file);
$writer = $this->getWriter($file);
$writer->open();
foreach ($data as $item) {
$writer->write($item);
}
$writer->close();
$exportData = file_get_contents($file);
$event->setResponse(new Response($exportData, $status));
}