/** * @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); }
public function translate(Event $event) { if (!is_null($this->getUrl())) { $event->setUrl($this->getUrl()); } if (!is_null($this->getType())) { $event->setType($this->getType()); } if (!is_null($this > $this->getSystem())) { $event->setSystem($this->getSystem()); } if (!is_null($this->getMessage())) { $event->setMessage($this->getMessage()); } return $event; }
public function jenkinsAction() { $rawContent = file_get_contents('php://input'); $newEvent = json_decode($rawContent); file_put_contents("/tmp/jenkins.log", json_encode($newEvent)); $event = new Event(); if ($newEvent->build->status == "SUCCESS") { $status = "success"; $message = ""; } else { $status = "failure"; $message = $this->getMessage($newEvent->name, "Jenkins \"" . $newEvent->name . "\" failed"); } $event->setMessage($message); $event->setStatus($status); $event->setSystem($this->translate($newEvent->name)); $event->setIdentifier($newEvent->name); $event->setUrl($newEvent->build->full_url); $this->storeEvent($event); return new JsonResponse(array('success' => true)); }