Skip to content

Commit

Permalink
Merge pull request #214 from moririnson/add-get-number-of-messages
Browse files Browse the repository at this point in the history
Add get number of messages sent.
  • Loading branch information
moririnson authored Apr 17, 2019
2 parents 2b8df4a + 0b498de commit f773f2c
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 0 deletions.
41 changes: 41 additions & 0 deletions src/LINEBot.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
use LINE\LINEBot\SignatureValidator;
use LINE\LINEBot\RichMenuBuilder;
use ReflectionClass;
use DateTime;
use DateTimeZone;

/**
* A client class of LINE Messaging API.
Expand Down Expand Up @@ -479,4 +481,43 @@ public function getRichMenuList()
{
return $this->httpClient->get($this->endpointBase . '/v2/bot/richmenu/list');
}

/**
* Get number of sent reply messages
*
* @param DateTime $datetime Date the messages were sent.
* @return Response
*/
public function getNumberOfSentReplyMessages(DateTime $datetime)
{
$url = $this->endpointBase . '/v2/bot/message/delivery/reply';
$datetime->setTimezone(new DateTimeZone('Asia/Tokyo'));
return $this->httpClient->get($url, ['date' => $datetime->format('Ymd')]);
}

/**
* Get number of sent push messages
*
* @param DateTime $datetime Date the messages were sent.
* @return Response
*/
public function getNumberOfSentPushMessages(DateTime $datetime)
{
$url = $this->endpointBase . '/v2/bot/message/delivery/push';
$datetime->setTimezone(new DateTimeZone('Asia/Tokyo'));
return $this->httpClient->get($url, ['date' => $datetime->format('Ymd')]);
}

/**
* Get number of sent multicast messages
*
* @param DateTime $datetime Date the messages were sent.
* @return Response
*/
public function getNumberOfSentMulticastMessages(DateTime $datetime)
{
$url = $this->endpointBase . '/v2/bot/message/delivery/multicast';
$datetime->setTimezone(new DateTimeZone('Asia/Tokyo'));
return $this->httpClient->get($url, ['date' => $datetime->format('Ymd')]);
}
}
109 changes: 109 additions & 0 deletions tests/LINEBot/GetNumberOfSendMessagesTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<?php

/**
* Copyright 2019 LINE Corporation
*
* LINE Corporation licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/

namespace LINE\Tests\LINEBot;

use LINE\LINEBot;
use LINE\Tests\LINEBot\Util\DummyHttpClient;
use PHPUnit\Framework\TestCase;
use DateTime;
use DateTimeZone;

class GetNumberOfMessagesSentTest extends TestCase
{
public function testGetNumberOfSentReplyMessages()
{
$date = new DateTime();
$mock = function ($testRunner, $httpMethod, $url, $data) use ($date) {
/** @var \PHPUnit\Framework\TestCase $testRunner */
$testRunner->assertEquals('GET', $httpMethod);
$testRunner->assertEquals('https://api.line.me/v2/bot/message/delivery/reply', $url);
$date->setTimezone(new DateTimeZone('Asia/Tokyo'));
$testRunner->assertEquals([
'date' => $date->format('Ymd')
], $data);
return [
'status' => 'ready',
'success' => 10000
];
};
$bot = new LINEBot(new DummyHttpClient($this, $mock), ['channelSecret' => 'CHANNEL-SECRET']);
$res = $bot->getNumberOfSentReplyMessages($date);

$this->assertEquals(200, $res->getHTTPStatus());
$this->assertTrue($res->isSucceeded());

$data = $res->getJSONDecodedBody();
$this->assertEquals('ready', $data['status']);
$this->assertEquals(10000, $data['success']);
}

public function testGetNumberOfSentPushMessages()
{
$date = new DateTime();
$mock = function ($testRunner, $httpMethod, $url, $data) use ($date) {
/** @var \PHPUnit\Framework\TestCase $testRunner */
$testRunner->assertEquals('GET', $httpMethod);
$testRunner->assertEquals('https://api.line.me/v2/bot/message/delivery/push', $url);
$date->setTimezone(new DateTimeZone('Asia/Tokyo'));
$testRunner->assertEquals([
'date' => $date->format('Ymd')
], $data);
return [
'status' => 'ready',
'success' => 10000
];
};
$bot = new LINEBot(new DummyHttpClient($this, $mock), ['channelSecret' => 'CHANNEL-SECRET']);
$res = $bot->getNumberOfSentPushMessages($date);

$this->assertEquals(200, $res->getHTTPStatus());
$this->assertTrue($res->isSucceeded());

$data = $res->getJSONDecodedBody();
$this->assertEquals('ready', $data['status']);
$this->assertEquals(10000, $data['success']);
}

public function testGetNumberOfSentMulticastMessages()
{
$date = new DateTime();
$mock = function ($testRunner, $httpMethod, $url, $data) use ($date) {
/** @var \PHPUnit\Framework\TestCase $testRunner */
$testRunner->assertEquals('GET', $httpMethod);
$testRunner->assertEquals('https://api.line.me/v2/bot/message/delivery/multicast', $url);
$date->setTimezone(new DateTimeZone('Asia/Tokyo'));
$testRunner->assertEquals([
'date' => $date->format('Ymd')
], $data);
return [
'status' => 'ready',
'success' => 10000
];
};
$bot = new LINEBot(new DummyHttpClient($this, $mock), ['channelSecret' => 'CHANNEL-SECRET']);
$res = $bot->getNumberOfSentMulticastMessages($date);

$this->assertEquals(200, $res->getHTTPStatus());
$this->assertTrue($res->isSucceeded());

$data = $res->getJSONDecodedBody();
$this->assertEquals('ready', $data['status']);
$this->assertEquals(10000, $data['success']);
}
}

0 comments on commit f773f2c

Please sign in to comment.