public function __construct(ApiProblem $problem, $status = 200, $headers = array())
 {
     $headers += ['Content-Type' => 'application/problem+json'];
     if (null !== $problem->getStatus()) {
         $headers += ['X-Status-Code' => $problem->getStatus()];
     }
     $data = $problem->asArray();
     parent::__construct($data, $status, $headers);
 }
 protected function registerErrorListeners(Application $app)
 {
     $app->error(function (\Exception $e, $code) {
         $problem = new ApiProblem('Unknown error');
         $problem->setDetail($e->getMessage());
         return new JsonResponse($problem->asArray(), $code);
     });
     $app->error(function (ObjectNotFoundException $e) {
         $problem = new ApiProblem('Object not found', 'http://httpstatus.es/404');
         $problem->setDetail($e->getMessage());
         return new JsonResponse($problem->asArray(), Response::HTTP_NOT_FOUND);
     }, 10);
     $app->error(function (NotFoundHttpException $e, $code) {
         $problem = new ApiProblem('Resource not found', 'http://httpstatus.es/404');
         $problem->setDetail($e->getMessage());
         return new JsonResponse($problem->asArray(), $code);
     }, 10);
     $app->error(function (NotAcceptableHttpException $e, $code) {
         $problem = new ApiProblem('No acceptable format available', 'http://httpstatus.es/406');
         $problem->setDetail($e->getMessage());
         return new JsonResponse($problem->asArray(), $code);
     }, 10);
 }