/** * @param Request $request * @return JsonResponse */ public function indexAction(Request $request, $formatName = "default") { $payload = file_get_contents('php://input'); $content = "queryString: " . $request->getQueryString() . "\n payload: " . $payload; file_put_contents("/tmp/koalamon/webhook_" . $formatName . ".log", json_encode($content)); $project = $this->getProject($request->get("api_key")); if ($project == null) { return $this->getJsonRespone(self::STATUS_FAILURE, "No project with api_key " . $request->get("api_key") . ' found.'); } $rawEvent = $this->getFormatHandler()->run($formatName, $request, $payload); if ($rawEvent === false) { return $this->getJsonRespone(self::STATUS_SKIPPED); } $event = new Event(); $event->setStatus($rawEvent->getStatus()); $event->setMessage($rawEvent->getMessage()); $event->setSystem($rawEvent->getSystem()); $event->setType($rawEvent->getType()); $event->setUnique($rawEvent->isUnique()); $event->setUrl($rawEvent->getUrl()); $event->setValue($rawEvent->getValue()); $em = $this->getDoctrine()->getManager(); $identifier = $em->getRepository('BauerIncidentDashboardCoreBundle:EventIdentifier')->findOneBy(array('project' => $project, 'identifier' => $rawEvent->getIdentifier())); if (is_null($identifier)) { $identifier = new EventIdentifier(); $identifier->setProject($project); $identifier->setIdentifier($rawEvent->getIdentifier()); $em->persist($identifier); $em->flush(); } $event->setEventIdentifier($identifier); $translatedEvent = $this->translate($event); ProjectHelper::addEvent($this->get("Router"), $em, $translatedEvent); return $this->getJsonRespone(self::STATUS_SUCCESS); }