101 throw new \InvalidArgumentException(
'The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.');
138 'notify' => $this->version == self::API_V1 ?
139 ($this->notify ? 1 : 0) :
140 ($this->notify ?
'true' :
'false'),
141 'message' => $record[
'formatted'],
142 'message_format' => $this->format,
147 if (function_exists(
'mb_substr')) {
148 $dataArray[
'message'] = mb_substr(
$dataArray[
'message'], 0, static::MAXIMUM_MESSAGE_LENGTH).
' [truncated]';
150 $dataArray[
'message'] = substr(
$dataArray[
'message'], 0, static::MAXIMUM_MESSAGE_LENGTH).
' [truncated]';
155 if ($this->version == self::API_V1) {
161 if ($this->version == self::API_V1 || $this->name !==
null) {
176 if ($this->version == self::API_V1) {
177 $header =
"POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n";
180 $room = rawurlencode($this->room);
181 $header =
"POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n";
184 $header .=
"Host: {$this->host}\r\n";
185 $header .=
"Content-Type: application/x-www-form-urlencoded\r\n";
186 $header .=
"Content-Length: " . strlen($content) .
"\r\n";
219 protected function write(array $record)
221 parent::write($record);
237 foreach ($batchRecords as $batchRecord) {
239 $this->
write($batchRecord);
262 $batchRecords = array();
264 $formattedMessages = array();
272 if ($record[
'level'] >
$level) {
273 $level = $record[
'level'];
274 $levelName = $record[
'level_name'];
277 if (
null === $datetime) {
278 $datetime = $record[
'datetime'];
283 $formattedMessages[] = $this->
getFormatter()->format($record);
284 $formattedMessageStr = implode(
'', $formattedMessages);
286 $batchRecord = array(
287 'message' => $messageStr,
288 'formatted' => $formattedMessageStr,
289 'context' => array(),
296 $lastFormattedMessage = array_pop($formattedMessages);
298 $batchRecord[
'formatted'] = implode(
'', $formattedMessages);
300 $batchRecords[] = $batchRecord;
302 $formattedMessages = array($lastFormattedMessage);
308 if (
null !== $batchRecord) {
309 $batchRecords[] = $batchRecord;
313 foreach ($batchRecords as &$batchRecord) {
314 $batchRecord = array_merge(
318 'level_name' => $levelName,
319 'datetime' => $datetime,
324 return $batchRecords;
344 if (function_exists(
'mb_strlen')) {
345 return (mb_strlen($str) <= $length);
348 return (strlen($str) <= $length);
An exception for terminatinating execution or to throw for unit testing.
getFormatter()
{Gets the formatter.FormatterInterface}
isHandling(array $record)
{Checks whether the given record will be handled by this handler.This is mostly done for performance ...
processRecord(array $record)
Processes a record.
Sends notifications through the hipchat api to a hipchat room.
const MAXIMUM_NAME_LENGTH
The maximum allowed length for the name used in the "from" field.
generateDataStream($record)
{}
__construct($token, $room, $name='Monolog', $notify=false, $level=Logger::CRITICAL, $bubble=true, $useSSL=true, $format='text', $host='api.hipchat.com', $version=self::API_V1)
buildContent($record)
Builds the body of API call.
buildHeader($content)
Builds the header of the API Call.
const API_V1
Use API version 1.
handleBatch(array $records)
{{Handles a set of records at once.}}
write(array $record)
{Connect (if necessary) and write to the socket.UnexpectedValueException RuntimeException}
const MAXIMUM_MESSAGE_LENGTH
The maximum allowed length for the message.
const API_V2
Use API version v2.
validateStringLength($str, $length)
Validates the length of a string.
combineRecords($records)
Combines multiple records into one.
getAlertColor($level)
Assigns a color to each level of log records.
Stores to any socket - uses fsockopen() or pfsockopen().
closeSocket()
Close socket, if open.
const ERROR
Runtime errors.
const CRITICAL
Critical conditions.
const WARNING
Exceptional occurrences that are not errors.
const INFO
Interesting events.
const DEBUG
Detailed debug information.