diff options
Diffstat (limited to 'src/Monolog/Handler/HipChatHandler.php')
-rw-r--r-- | src/Monolog/Handler/HipChatHandler.php | 93 |
1 files changed, 31 insertions, 62 deletions
diff --git a/src/Monolog/Handler/HipChatHandler.php b/src/Monolog/Handler/HipChatHandler.php index 73049f3..98441f3 100644 --- a/src/Monolog/Handler/HipChatHandler.php +++ b/src/Monolog/Handler/HipChatHandler.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of the Monolog package. @@ -16,12 +16,13 @@ use Monolog\Logger; /** * Sends notifications through the hipchat api to a hipchat room * + * This handler only supports the API v2 + * * Notes: * API token - HipChat API token * Room - HipChat Room Id or name, where messages are sent * Name - Name used to send the message (from) * notify - Should the message trigger a notification in the clients - * version - The API version to use (HipChatHandler::API_V1 | HipChatHandler::API_V2) * * @author Rafael Dohms <rafael@doh.ms> * @see https://www.hipchat.com/docs/api @@ -29,16 +30,6 @@ use Monolog\Logger; class HipChatHandler extends SocketHandler { /** - * Use API version 1 - */ - const API_V1 = 'v1'; - - /** - * Use API version v2 - */ - const API_V2 = 'v2'; - - /** * The maximum allowed length for the name used in the "from" field. */ const MAXIMUM_NAME_LENGTH = 15; @@ -79,28 +70,18 @@ class HipChatHandler extends SocketHandler private $host; /** - * @var string + * @param string $token HipChat API Token + * @param string $room The room that should be alerted of the message (Id or Name) + * @param string $name Name used in the "from" field. + * @param bool $notify Trigger a notification in clients or not + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param bool $useSSL Whether to connect via SSL. + * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages) + * @param string $host The HipChat server hostname. */ - private $version; - - /** - * @param string $token HipChat API Token - * @param string $room The room that should be alerted of the message (Id or Name) - * @param string $name Name used in the "from" field. - * @param bool $notify Trigger a notification in clients or not - * @param int $level The minimum logging level at which this handler will be triggered - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * @param bool $useSSL Whether to connect via SSL. - * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages) - * @param string $host The HipChat server hostname. - * @param string $version The HipChat API version (default HipChatHandler::API_V1) - */ - public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com', $version = self::API_V1) + public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com') { - if ($version == self::API_V1 && !$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) { - throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.'); - } - $connectionString = $useSSL ? 'ssl://'.$host.':443' : $host.':80'; parent::__construct($connectionString, $level, $bubble); @@ -110,7 +91,6 @@ class HipChatHandler extends SocketHandler $this->room = $room; $this->format = $format; $this->host = $host; - $this->version = $version; } /** @@ -134,14 +114,12 @@ class HipChatHandler extends SocketHandler */ private function buildContent($record) { - $dataArray = array( - 'notify' => $this->version == self::API_V1 ? - ($this->notify ? 1 : 0) : - ($this->notify ? 'true' : 'false'), + $dataArray = [ + 'notify' => $this->notify ? 'true' : 'false', 'message' => $record['formatted'], 'message_format' => $this->format, 'color' => $this->getAlertColor($record['level']), - ); + ]; if (!$this->validateStringLength($dataArray['message'], static::MAXIMUM_MESSAGE_LENGTH)) { if (function_exists('mb_substr')) { @@ -151,14 +129,9 @@ class HipChatHandler extends SocketHandler } } - // if we are using the legacy API then we need to send some additional information - if ($this->version == self::API_V1) { - $dataArray['room_id'] = $this->room; - } - // append the sender name if it is set // always append it if we use the v1 api (it is required in v1) - if ($this->version == self::API_V1 || $this->name !== null) { + if ($this->name !== null) { $dataArray['from'] = (string) $this->name; } @@ -173,13 +146,9 @@ class HipChatHandler extends SocketHandler */ private function buildHeader($content) { - if ($this->version == self::API_V1) { - $header = "POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n"; - } else { - // needed for rooms with special (spaces, etc) characters in the name - $room = rawurlencode($this->room); - $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n"; - } + // needed for rooms with special (spaces, etc) characters in the name + $room = rawurlencode($this->room); + $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n"; $header .= "Host: {$this->host}\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; @@ -259,9 +228,9 @@ class HipChatHandler extends SocketHandler private function combineRecords($records) { $batchRecord = null; - $batchRecords = array(); - $messages = array(); - $formattedMessages = array(); + $batchRecords = []; + $messages = []; + $formattedMessages = []; $level = 0; $levelName = null; $datetime = null; @@ -283,12 +252,12 @@ class HipChatHandler extends SocketHandler $formattedMessages[] = $this->getFormatter()->format($record); $formattedMessageStr = implode('', $formattedMessages); - $batchRecord = array( + $batchRecord = [ 'message' => $messageStr, 'formatted' => $formattedMessageStr, - 'context' => array(), - 'extra' => array(), - ); + 'context' => [], + 'extra' => [], + ]; if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) { // Pop the last message and implode the remaining messages @@ -298,8 +267,8 @@ class HipChatHandler extends SocketHandler $batchRecord['formatted'] = implode('', $formattedMessages); $batchRecords[] = $batchRecord; - $messages = array($lastMessage); - $formattedMessages = array($lastFormattedMessage); + $messages = [$lastMessage]; + $formattedMessages = [$lastFormattedMessage]; $batchRecord = null; } @@ -313,11 +282,11 @@ class HipChatHandler extends SocketHandler foreach ($batchRecords as &$batchRecord) { $batchRecord = array_merge( $batchRecord, - array( + [ 'level' => $level, 'level_name' => $levelName, 'datetime' => $datetime, - ) + ] ); } |