summaryrefslogtreecommitdiffstats
path: root/src/Monolog/Handler/HipChatHandler.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Monolog/Handler/HipChatHandler.php')
-rw-r--r--src/Monolog/Handler/HipChatHandler.php93
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,
- )
+ ]
);
}