Skip to content

Commit 8d4914a

Browse files
authored
Merge pull request #124 from nicklaw5/v5-0-1
2 parents 9ebb174 + 77ae5dd commit 8d4914a

File tree

5 files changed

+98
-7
lines changed

5 files changed

+98
-7
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace spec\NewTwitchApi\Resources;
4+
5+
use GuzzleHttp\Client;
6+
use GuzzleHttp\Psr7\Request;
7+
use GuzzleHttp\Psr7\Response;
8+
use NewTwitchApi\RequestGenerator;
9+
use PhpSpec\ObjectBehavior;
10+
11+
class ChatApiSpec extends ObjectBehavior
12+
{
13+
function let(Client $guzzleClient, RequestGenerator $requestGenerator, Request $request, Response $response)
14+
{
15+
$this->beConstructedWith($guzzleClient, $requestGenerator);
16+
$guzzleClient->send($request)->willReturn($response);
17+
}
18+
19+
function it_should_get_channel_chat_badges(RequestGenerator $requestGenerator, Request $request, Response $response)
20+
{
21+
$requestGenerator->generate('GET', 'chat/badges', 'TEST_TOKEN', [['key' => 'broadcaster_id', 'value' => '123']], [])->willReturn($request);
22+
$this->getChannelChatBadges('TEST_TOKEN', '123')->shouldBe($response);
23+
}
24+
25+
function it_should_get_global_chat_badges(RequestGenerator $requestGenerator, Request $request, Response $response)
26+
{
27+
$requestGenerator->generate('GET', 'chat/badges/global', 'TEST_TOKEN', [], [])->willReturn($request);
28+
$this->getGlobalChatBadges('TEST_TOKEN')->shouldBe($response);
29+
}
30+
}

spec/NewTwitchApi/Resources/EventSubApiSpec.php

+9-3
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,16 @@ function it_should_subscribe_to_channel_subscribe(RequestGenerator $requestGener
7979
$this->subscribeToChannelSubscribe($this->bearer, $this->secret, $this->callback, '12345')->shouldBe($response);
8080
}
8181

82-
function it_should_subscribe_to_channel_unsubscribe(RequestGenerator $requestGenerator, Request $request, Response $response)
82+
function it_should_subscribe_to_channel_subscription_end(RequestGenerator $requestGenerator, Request $request, Response $response)
8383
{
84-
$this->createEventSubSubscription('channel.unsubscribe', 'beta', ['broadcaster_user_id' => '12345'], $requestGenerator)->willReturn($request);
85-
$this->subscribeToChannelUnsubscribe($this->bearer, $this->secret, $this->callback, '12345')->shouldBe($response);
84+
$this->createEventSubSubscription('channel.subscription.end', '1', ['broadcaster_user_id' => '12345'], $requestGenerator)->willReturn($request);
85+
$this->subscribeToChannelSubscriptionEnd($this->bearer, $this->secret, $this->callback, '12345')->shouldBe($response);
86+
}
87+
88+
function it_should_subscribe_to_channel_subscription_gift(RequestGenerator $requestGenerator, Request $request, Response $response)
89+
{
90+
$this->createEventSubSubscription('channel.subscription.gift', '1', ['broadcaster_user_id' => '12345'], $requestGenerator)->willReturn($request);
91+
$this->subscribeToChannelSubscriptionGift($this->bearer, $this->secret, $this->callback, '12345')->shouldBe($response);
8692
}
8793

8894
function it_should_subscribe_to_channel_cheer(RequestGenerator $requestGenerator, Request $request, Response $response)

src/NewTwitchApi/NewTwitchApi.php

+8
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use NewTwitchApi\Resources\BitsApi;
1212
use NewTwitchApi\Resources\ChannelPointsApi;
1313
use NewTwitchApi\Resources\ChannelsApi;
14+
use NewTwitchApi\Resources\ChatApi;
1415
use NewTwitchApi\Resources\ClipsApi;
1516
use NewTwitchApi\Resources\EntitlementsApi;
1617
use NewTwitchApi\Resources\EventSubApi;
@@ -37,6 +38,7 @@ class NewTwitchApi
3738
private $bitsApi;
3839
private $channelPointsApi;
3940
private $channelsApi;
41+
private $chatApi;
4042
private $clipsApi;
4143
private $entitlementsApi;
4244
private $eventSubApi;
@@ -64,6 +66,7 @@ public function __construct(Client $helixGuzzleClient, string $clientId, string
6466
$this->bitsApi = new BitsApi($helixGuzzleClient, $requestGenerator);
6567
$this->channelPointsApi = new ChannelPointsApi($helixGuzzleClient, $requestGenerator);
6668
$this->channelsApi = new ChannelsApi($helixGuzzleClient, $requestGenerator);
69+
$this->chatApi = new ChatApi($helixGuzzleClient, $requestGenerator);
6770
$this->clipsApi = new ClipsApi($helixGuzzleClient, $requestGenerator);
6871
$this->entitlementsApi = new EntitlementsApi($helixGuzzleClient, $requestGenerator);
6972
$this->eventSubApi = new EventSubApi($helixGuzzleClient, $requestGenerator);
@@ -113,6 +116,11 @@ public function getChannelsApi(): ChannelsApi
113116
return $this->channelsApi;
114117
}
115118

119+
public function getChatApi(): ChatApi
120+
{
121+
return $this->chatApi;
122+
}
123+
116124
public function getClipsApi(): ClipsApi
117125
{
118126
return $this->clipsApi;
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace NewTwitchApi\Resources;
6+
7+
use GuzzleHttp\Exception\GuzzleException;
8+
use Psr\Http\Message\ResponseInterface;
9+
10+
class ChatApi extends AbstractResource
11+
{
12+
/**
13+
* @throws GuzzleException
14+
* @link https://dev.twitch.tv/docs/api/reference#get-channel-chat-badges
15+
*/
16+
public function getChannelChatBadges(string $bearer, string $broadcasterId): ResponseInterface
17+
{
18+
$queryParamsMap = [];
19+
$queryParamsMap[] = ['key' => 'broadcaster_id', 'value' => $broadcasterId];
20+
21+
return $this->getApi('chat/badges', $bearer, $queryParamsMap);
22+
}
23+
24+
/**
25+
* @throws GuzzleException
26+
* @link https://dev.twitch.tv/docs/api/reference#get-global-chat-badges
27+
*/
28+
public function getGlobalChatBadges(string $bearer): ResponseInterface
29+
{
30+
return $this->getApi('chat/badges/global', $bearer);
31+
}
32+
}

src/NewTwitchApi/Resources/EventSubApi.php

+19-4
Original file line numberDiff line numberDiff line change
@@ -109,16 +109,31 @@ public function subscribeToChannelSubscribe(string $bearer, string $secret, stri
109109
}
110110

111111
/**
112-
* @link https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types#channelunsubscribe-beta
112+
* @link https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#channelsubscriptionend
113113
*/
114-
public function subscribeToChannelUnsubscribe(string $bearer, string $secret, string $callback, string $twitchId): ResponseInterface
114+
public function subscribeToChannelSubscriptionEnd(string $bearer, string $secret, string $callback, string $twitchId): ResponseInterface
115115
{
116116
return $this->createEventSubSubscription(
117117
$bearer,
118118
$secret,
119119
$callback,
120-
'channel.unsubscribe',
121-
'beta',
120+
'channel.subscription.end',
121+
'1',
122+
['broadcaster_user_id' => $twitchId],
123+
);
124+
}
125+
126+
/**
127+
* @link https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#channelsubscriptiongift-beta
128+
*/
129+
public function subscribeToChannelSubscriptionGift(string $bearer, string $secret, string $callback, string $twitchId): ResponseInterface
130+
{
131+
return $this->createEventSubSubscription(
132+
$bearer,
133+
$secret,
134+
$callback,
135+
'channel.subscription.gift',
136+
'1',
122137
['broadcaster_user_id' => $twitchId],
123138
);
124139
}

0 commit comments

Comments
 (0)