HipChatHandler
extends SocketHandler
in package
Sends notifications through the hipchat api to a hipchat room
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)
Tags
Table of Contents
Constants
- API_V1 = 'v1'
- Use API version 1
- API_V2 = 'v2'
- Use API version v2
- MAXIMUM_MESSAGE_LENGTH = 9500
- The maximum allowed length for the message.
- MAXIMUM_NAME_LENGTH = 15
- The maximum allowed length for the name used in the "from" field.
Properties
- $bubble : mixed
- $formatter : FormatterInterface
- $level : mixed
- $processors : mixed
- $chunkSize : mixed
- $connectionString : mixed
- $connectionTimeout : mixed
- $errno : mixed
- $errstr : mixed
- $format : string
- $host : string
- $lastSentBytes : mixed
- $lastWritingAt : mixed
- $name : string
- $notify : bool
- $persistent : mixed
- $resource : mixed
- $room : string
- $timeout : mixed
- $token : string
- $version : string
- $writingTimeout : mixed
Methods
- __construct() : mixed
- __destruct() : mixed
- close() : mixed
- We will not close a PersistentSocket instance so it can be reused in other requests.
- closeSocket() : mixed
- Close socket, if open
- getBubble() : bool
- Gets the bubbling behavior.
- getChunkSize() : float
- Get current chunk size
- getConnectionString() : string
- Get current connection string
- getConnectionTimeout() : float
- Get current connection timeout setting
- getFormatter() : FormatterInterface
- Gets the formatter.
- getLevel() : int
- Gets minimum logging level at which this handler will be triggered.
- getTimeout() : float
- Get current in-transfer timeout
- getWritingTimeout() : float
- Get current local writing timeout
- handle() : bool
- Handles a record.
- handleBatch() : mixed
- Handles a set of records at once.
- isConnected() : bool
- Check to see if the socket is currently available.
- isHandling() : bool
- Checks whether the given record will be handled by this handler.
- isPersistent() : bool
- Get persistent setting
- popProcessor() : callable
- Removes the processor on top of the stack and returns it.
- pushProcessor() : self
- Adds a processor in the stack.
- reset() : mixed
- setBubble() : self
- Sets the bubbling behavior.
- setChunkSize() : mixed
- Set chunk size. Only has effect during connection in the writing cycle.
- setConnectionTimeout() : mixed
- Set connection timeout. Only has effect before we connect.
- setFormatter() : self
- Sets the formatter.
- setLevel() : self
- Sets minimum logging level at which this handler will be triggered.
- setPersistent() : mixed
- Set socket connection to nbe persistent. It only has effect before the connection is initiated.
- setTimeout() : mixed
- Set write timeout. Only has effect before we connect.
- setWritingTimeout() : mixed
- Set writing timeout. Only has effect during connection in the writing cycle.
- finalizeWrite() : mixed
- Finalizes the request by reading some bytes and then closing the socket
- fsockopen() : mixed
- Wrapper to allow mocking
- fwrite() : mixed
- Wrapper to allow mocking
- generateDataStream() : string
- getAlertColor() : string
- Assigns a color to each level of log records.
- getDefaultFormatter() : FormatterInterface
- Gets the default formatter.
- getResource() : resource|null
- pfsockopen() : mixed
- Wrapper to allow mocking
- processRecord() : array<string|int, mixed>
- Processes a record.
- streamGetMetadata() : mixed
- Wrapper to allow mocking
- streamSetChunkSize() : mixed
- Wrapper to allow mocking
- streamSetTimeout() : mixed
- Wrapper to allow mocking
- write() : void
- Connect (if necessary) and write to the socket
- buildContent() : string
- Builds the body of API call
- buildHeader() : string
- Builds the header of the API Call
- combineRecords() : array<string|int, mixed>
- Combines multiple records into one. Error level of the combined record will be the highest level from the given records. Datetime will be taken from the first record.
- connect() : mixed
- connectIfNotConnected() : mixed
- createSocketResource() : mixed
- setSocketTimeout() : mixed
- setStreamChunkSize() : mixed
- validateStringLength() : bool
- Validates the length of a string.
- validateTimeout() : mixed
- writeToSocket() : mixed
- writingIsTimedOut() : mixed
Constants
API_V1
Use API version 1
public
mixed
API_V1
= 'v1'
API_V2
Use API version v2
public
mixed
API_V2
= 'v2'
MAXIMUM_MESSAGE_LENGTH
The maximum allowed length for the message.
public
mixed
MAXIMUM_MESSAGE_LENGTH
= 9500
MAXIMUM_NAME_LENGTH
The maximum allowed length for the name used in the "from" field.
public
mixed
MAXIMUM_NAME_LENGTH
= 15
Properties
$bubble
protected
mixed
$bubble
= true
$formatter
protected
FormatterInterface
$formatter
$level
protected
mixed
$level
= \Monolog\Logger::DEBUG
$processors
protected
mixed
$processors
= array()
$chunkSize
private
mixed
$chunkSize
= null
$connectionString
private
mixed
$connectionString
$connectionTimeout
private
mixed
$connectionTimeout
$errno
private
mixed
$errno
$errstr
private
mixed
$errstr
$format
private
string
$format
$host
private
string
$host
$lastSentBytes
private
mixed
$lastSentBytes
= null
$lastWritingAt
private
mixed
$lastWritingAt
$name
private
string
$name
$notify
private
bool
$notify
$persistent
private
mixed
$persistent
= false
$resource
private
mixed
$resource
$room
private
string
$room
$timeout
private
mixed
$timeout
= 0
$token
private
string
$token
$version
private
string
$version
$writingTimeout
private
mixed
$writingTimeout
= 10
Methods
__construct()
public
__construct(string $token, string $room[, string $name = 'Monolog' ][, bool $notify = false ][, int $level = Logger::CRITICAL ][, bool $bubble = true ][, bool $useSSL = true ][, string $format = 'text' ][, string $host = 'api.hipchat.com' ][, string $version = self::API_V1 ]) : mixed
Parameters
- $token : string
-
HipChat API Token
- $room : string
-
The room that should be alerted of the message (Id or Name)
- $name : string = 'Monolog'
-
Name used in the "from" field.
- $notify : bool = false
-
Trigger a notification in clients or not
- $level : int = Logger::CRITICAL
-
The minimum logging level at which this handler will be triggered
- $bubble : bool = true
-
Whether the messages that are handled can bubble up the stack or not
- $useSSL : bool = true
-
Whether to connect via SSL.
- $format : string = 'text'
-
The format of the messages (default to text, can be set to html if you have html in the messages)
- $host : string = 'api.hipchat.com'
-
The HipChat server hostname.
- $version : string = self::API_V1
-
The HipChat API version (default HipChatHandler::API_V1)
__destruct()
public
__destruct() : mixed
close()
We will not close a PersistentSocket instance so it can be reused in other requests.
public
close() : mixed
closeSocket()
Close socket, if open
public
closeSocket() : mixed
getBubble()
Gets the bubbling behavior.
public
getBubble() : bool
Return values
bool —true means that this handler allows bubbling. false means that bubbling is not permitted.
getChunkSize()
Get current chunk size
public
getChunkSize() : float
Return values
floatgetConnectionString()
Get current connection string
public
getConnectionString() : string
Return values
stringgetConnectionTimeout()
Get current connection timeout setting
public
getConnectionTimeout() : float
Return values
floatgetFormatter()
Gets the formatter.
public
getFormatter() : FormatterInterface
Return values
FormatterInterfacegetLevel()
Gets minimum logging level at which this handler will be triggered.
public
getLevel() : int
Return values
intgetTimeout()
Get current in-transfer timeout
public
getTimeout() : float
Return values
floatgetWritingTimeout()
Get current local writing timeout
public
getWritingTimeout() : float
Return values
floathandle()
Handles a record.
public
handle(array<string|int, mixed> $record) : bool
Parameters
- $record : array<string|int, mixed>
-
The record to handle
Return values
bool —true means that this handler handled the record, and that bubbling is not permitted. false means the record was either not processed or that this handler allows bubbling.
handleBatch()
Handles a set of records at once.
public
handleBatch(array<string|int, mixed> $records) : mixed
Parameters
- $records : array<string|int, mixed>
-
The records to handle (an array of record arrays)
isConnected()
Check to see if the socket is currently available.
public
isConnected() : bool
UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details.
Return values
boolisHandling()
Checks whether the given record will be handled by this handler.
public
isHandling(array<string|int, mixed> $record) : bool
Parameters
- $record : array<string|int, mixed>
-
Partial log record containing only a level key
Return values
boolisPersistent()
Get persistent setting
public
isPersistent() : bool
Return values
boolpopProcessor()
Removes the processor on top of the stack and returns it.
public
popProcessor() : callable
Return values
callablepushProcessor()
Adds a processor in the stack.
public
pushProcessor(mixed $callback) : self
Parameters
- $callback : mixed
Return values
selfreset()
public
reset() : mixed
setBubble()
Sets the bubbling behavior.
public
setBubble(bool $bubble) : self
Parameters
- $bubble : bool
-
true means that this handler allows bubbling. false means that bubbling is not permitted.
Return values
selfsetChunkSize()
Set chunk size. Only has effect during connection in the writing cycle.
public
setChunkSize(float $bytes) : mixed
Parameters
- $bytes : float
setConnectionTimeout()
Set connection timeout. Only has effect before we connect.
public
setConnectionTimeout(float $seconds) : mixed
Parameters
- $seconds : float
Tags
setFormatter()
Sets the formatter.
public
setFormatter(FormatterInterface $formatter) : self
Parameters
- $formatter : FormatterInterface
Return values
selfsetLevel()
Sets minimum logging level at which this handler will be triggered.
public
setLevel(int|string $level) : self
Parameters
- $level : int|string
-
Level or level name
Return values
selfsetPersistent()
Set socket connection to nbe persistent. It only has effect before the connection is initiated.
public
setPersistent(bool $persistent) : mixed
Parameters
- $persistent : bool
setTimeout()
Set write timeout. Only has effect before we connect.
public
setTimeout(float $seconds) : mixed
Parameters
- $seconds : float
Tags
setWritingTimeout()
Set writing timeout. Only has effect during connection in the writing cycle.
public
setWritingTimeout(float $seconds) : mixed
Parameters
- $seconds : float
-
0 for no timeout
finalizeWrite()
Finalizes the request by reading some bytes and then closing the socket
protected
finalizeWrite() : mixed
If we do not read some but close the socket too early, hipchat sometimes drops the request entirely.
fsockopen()
Wrapper to allow mocking
protected
fsockopen() : mixed
fwrite()
Wrapper to allow mocking
protected
fwrite(mixed $data) : mixed
Parameters
- $data : mixed
generateDataStream()
protected
generateDataStream(array<string|int, mixed> $record) : string
Parameters
- $record : array<string|int, mixed>
Return values
stringgetAlertColor()
Assigns a color to each level of log records.
protected
getAlertColor(int $level) : string
Parameters
- $level : int
Return values
stringgetDefaultFormatter()
Gets the default formatter.
protected
getDefaultFormatter() : FormatterInterface
Return values
FormatterInterfacegetResource()
protected
getResource() : resource|null
Return values
resource|nullpfsockopen()
Wrapper to allow mocking
protected
pfsockopen() : mixed
processRecord()
Processes a record.
protected
processRecord(array<string|int, mixed> $record) : array<string|int, mixed>
Parameters
- $record : array<string|int, mixed>
Return values
array<string|int, mixed>streamGetMetadata()
Wrapper to allow mocking
protected
streamGetMetadata() : mixed
streamSetChunkSize()
Wrapper to allow mocking
protected
streamSetChunkSize() : mixed
Tags
streamSetTimeout()
Wrapper to allow mocking
protected
streamSetTimeout() : mixed
Tags
write()
Connect (if necessary) and write to the socket
protected
write(array<string|int, mixed> $record) : void
Parameters
- $record : array<string|int, mixed>
buildContent()
Builds the body of API call
private
buildContent(array<string|int, mixed> $record) : string
Parameters
- $record : array<string|int, mixed>
Return values
stringbuildHeader()
Builds the header of the API Call
private
buildHeader(string $content) : string
Parameters
- $content : string
Return values
stringcombineRecords()
Combines multiple records into one. Error level of the combined record will be the highest level from the given records. Datetime will be taken from the first record.
private
combineRecords(array<string|int, mixed> $records) : array<string|int, mixed>
Parameters
- $records : array<string|int, mixed>
Return values
array<string|int, mixed>connect()
private
connect() : mixed
connectIfNotConnected()
private
connectIfNotConnected() : mixed
createSocketResource()
private
createSocketResource() : mixed
setSocketTimeout()
private
setSocketTimeout() : mixed
setStreamChunkSize()
private
setStreamChunkSize() : mixed
validateStringLength()
Validates the length of a string.
private
validateStringLength(string $str, int $length) : bool
If the mb_strlen()
function is available, it will use that, as HipChat
allows UTF-8 characters. Otherwise, it will fall back to strlen()
.
Note that this might cause false failures in the specific case of using
a valid name with less than 16 characters, but 16 or more bytes, on a
system where mb_strlen()
is unavailable.
Parameters
- $str : string
- $length : int
Return values
boolvalidateTimeout()
private
validateTimeout(mixed $value) : mixed
Parameters
- $value : mixed
writeToSocket()
private
writeToSocket(mixed $data) : mixed
Parameters
- $data : mixed
writingIsTimedOut()
private
writingIsTimedOut(mixed $sent) : mixed
Parameters
- $sent : mixed