return $response->send(); } }, Application::EARLY_EVENT); //handling CORS respons with right headers $app->after(function (Request $request, Response $response) { $response->headers->set("Access-Control-Allow-Origin", "*"); $response->headers->set("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"); }); //accepting JSON $app->before(function (Request $request) { if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { $data = json_decode($request->getContent(), true); $request->request->replace(is_array($data) ? $data : array()); } }); $app->register(new ServiceControllerServiceProvider()); $app->register(new DoctrineServiceProvider(), array("db.options" => $app["db.options"])); $app->register(new HttpCacheServiceProvider(), array("http_cache.cache_dir" => ROOT_PATH . "/storage/cache")); $app->register(new MonologServiceProvider(), array("monolog.logfile" => ROOT_PATH . "/storage/logs/" . Carbon::now('Europe/London')->format("Y-m-d") . ".log", "monolog.level" => $app["log.level"], "monolog.name" => "application")); //load services $servicesLoader = new App\ServicesLoader($app); $servicesLoader->bindServicesIntoContainer(); //load routes $routesLoader = new App\RoutesLoader($app); $routesLoader->bindRoutesToControllers(); $app->error(function (\Exception $e, $code) use($app) { $app['monolog']->addError($e->getMessage()); $app['monolog']->addError($e->getTraceAsString()); return new JsonResponse(array("statusCode" => $code, "message" => $e->getMessage(), "stacktrace" => $e->getTraceAsString())); }); return $app;