Jordi Boggiano 9 лет назад
Родитель
Сommit
cb479a9b18
2 измененных файлов с 8 добавлено и 83 удалено
  1. 8 39
      src/Monolog/Handler/HipChatHandler.php
  2. 0 44
      tests/Monolog/Handler/HipChatHandlerTest.php

+ 8 - 39
src/Monolog/Handler/HipChatHandler.php

@@ -16,28 +16,19 @@ 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
  */
 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.
      */
@@ -78,11 +69,6 @@ class HipChatHandler extends SocketHandler
      */
     private $host;
 
-    /**
-     * @var string
-     */
-    private $version;
-
     /**
      * @param string $token   HipChat API Token
      * @param string $room    The room that should be alerted of the message (Id or Name)
@@ -93,14 +79,9 @@ class HipChatHandler extends SocketHandler
      * @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;
     }
 
     /**
@@ -135,9 +115,7 @@ class HipChatHandler extends SocketHandler
     private function buildContent($record)
     {
         $dataArray = array(
-            'notify' => $this->version == self::API_V1 ?
-                ($this->notify ? 1 : 0) :
-                ($this->notify ? 'true' : 'false'),
+            'notify' => $this->notify ? 'true' : 'false',
             'message' => $record['formatted'],
             'message_format' => $this->format,
             'color' => $this->getAlertColor($record['level']),
@@ -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";

+ 0 - 44
tests/Monolog/Handler/HipChatHandlerTest.php

@@ -24,30 +24,6 @@ class HipChatHandlerTest extends TestCase
     /** @var  HipChatHandler */
     private $handler;
 
-    public function testWriteHeader()
-    {
-        $this->createHandler();
-        $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
-        fseek($this->res, 0);
-        $content = fread($this->res, 1024);
-
-        $this->assertRegexp('/POST \/v1\/rooms\/message\?format=json&auth_token=.* HTTP\/1.1\\r\\nHost: api.hipchat.com\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
-
-        return $content;
-    }
-
-    public function testWriteCustomHostHeader()
-    {
-        $this->createHandler('myToken', 'room1', 'Monolog', true, 'hipchat.foo.bar');
-        $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
-        fseek($this->res, 0);
-        $content = fread($this->res, 1024);
-
-        $this->assertRegexp('/POST \/v1\/rooms\/message\?format=json&auth_token=.* HTTP\/1.1\\r\\nHost: hipchat.foo.bar\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
-
-        return $content;
-    }
-
     public function testWriteV2()
     {
         $this->createHandler('myToken', 'room1', 'Monolog', false, 'hipchat.foo.bar', 'v2');
@@ -92,18 +68,6 @@ class HipChatHandlerTest extends TestCase
         $this->assertRegexp('/notify=0&message=test1&message_format=text&color=red&room_id=room1&from=Monolog$/', $content);
     }
 
-    public function testWriteContentV1WithoutName()
-    {
-        $this->createHandler('myToken', 'room1', null, false, 'hipchat.foo.bar', 'v1');
-        $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
-        fseek($this->res, 0);
-        $content = fread($this->res, 1024);
-
-        $this->assertRegexp('/notify=0&message=test1&message_format=text&color=red&room_id=room1&from=$/', $content);
-
-        return $content;
-    }
-
     /**
      * @depends testWriteCustomHostHeader
      */
@@ -263,14 +227,6 @@ class HipChatHandlerTest extends TestCase
         $this->handler->setFormatter($this->getIdentityFormatter());
     }
 
-    /**
-     * @expectedException InvalidArgumentException
-     */
-    public function testCreateWithTooLongName()
-    {
-        $hipChatHandler = new HipChatHandler('token', 'room', 'SixteenCharsHere');
-    }
-
     public function testCreateWithTooLongNameV2()
     {
         // creating a handler with too long of a name but using the v2 api doesn't matter.