postUrl = $postUrl; $this->messageFactory = $messageFactory; $this->serializer = $serializer; } /** * Send a message to slack for a new vote * * @param Vote $vote * @return bool */ public function notifyVote(Vote $vote) { $message = $this->messageFactory->createMessageForVote($vote); return $this->sendMessage($message); } /** * Send a message to slack for a new talk * * @param Talk $talk * @param Event $event * * @return bool */ public function notifyTalk(Talk $talk, Event $event) { $message = $this->messageFactory->createMessageForTalk($talk, $event); return $this->sendMessage($message); } /** * @param Message $message * @return bool */ public function sendMessage(Message $message) { $ch = curl_init($this->postUrl); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, ['payload' => $this->serializer->serialize($message, 'json')]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return true; } }