1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-08 06:06:40 +02:00

Merge pull request #413 from fotomerchant/feature/slackEmoji

Added Emoji support for the Slack Handler
This commit is contained in:
Jordi Boggiano
2014-09-29 22:58:47 +01:00
2 changed files with 25 additions and 4 deletions

View File

@@ -39,6 +39,12 @@ class SlackHandler extends SocketHandler
*/ */
private $username; private $username;
/**
* Emoji icon name
* @var string
*/
private $iconEmoji;
/** /**
* Whether the message should be added to Slack as attachment (plain text otherwise) * Whether the message should be added to Slack as attachment (plain text otherwise)
* @var bool * @var bool
@@ -53,7 +59,7 @@ class SlackHandler extends SocketHandler
* @param int $level The minimum logging level at which this handler will be triggered * @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 $bubble Whether the messages that are handled can bubble up the stack or not
*/ */
public function __construct($token, $channel, $username = 'Monolog', $useAttachment = true, $level = Logger::CRITICAL, $bubble = true) public function __construct($token, $channel, $username = 'Monolog', $useAttachment = true, $level = Logger::CRITICAL, $bubble = true, $iconEmoji = null)
{ {
if (!extension_loaded('openssl')) { if (!extension_loaded('openssl')) {
throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler'); throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler');
@@ -64,6 +70,7 @@ class SlackHandler extends SocketHandler
$this->token = $token; $this->token = $token;
$this->channel = $channel; $this->channel = $channel;
$this->username = $username; $this->username = $username;
$this->iconEmoji = $iconEmoji;
$this->useAttachment = $useAttachment; $this->useAttachment = $useAttachment;
} }
@@ -121,6 +128,10 @@ class SlackHandler extends SocketHandler
$dataArray['text'] = $record['message']; $dataArray['text'] = $record['message'];
} }
if ($this->iconEmoji !== null) {
$dataArray['icon_emoji'] = ":{$this->iconEmoji}:";
}
return http_build_query($dataArray); return http_build_query($dataArray);
} }

View File

@@ -57,6 +57,16 @@ class SlackHandlerTest extends TestCase
$this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=&attachments=.*$/', $content); $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=&attachments=.*$/', $content);
} }
public function testWriteContentWithEmoji()
{
$this->createHandler('myToken', 'channel1', 'Monolog', true, 'alien');
$this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
fseek($this->res, 0);
$content = fread($this->res, 1024);
$this->assertRegexp('/icon_emoji=%3Aalien%3A$/', $content);
}
/** /**
* @dataProvider provideLevelColors * @dataProvider provideLevelColors
*/ */
@@ -94,9 +104,9 @@ class SlackHandlerTest extends TestCase
); );
} }
private function createHandler($token = 'myToken', $channel = 'channel1', $username = 'Monolog', $useAttachment = true) private function createHandler($token = 'myToken', $channel = 'channel1', $username = 'Monolog', $useAttachment = true, $iconEmoji = null)
{ {
$constructorArgs = array($token, $channel, $username, $useAttachment, Logger::DEBUG, true); $constructorArgs = array($token, $channel, $username, $useAttachment, Logger::DEBUG, true, $iconEmoji);
$this->res = fopen('php://memory', 'a'); $this->res = fopen('php://memory', 'a');
$this->handler = $this->getMock( $this->handler = $this->getMock(
'\Monolog\Handler\SlackHandler', '\Monolog\Handler\SlackHandler',