twitch-toolkit
Version:
A set of tools to integrate with Twitch API, Twitch Chat and Twitch WebHooks.
162 lines (111 loc) • 6.03 kB
Markdown
# twitch-toolkit
[](http://doge.mit-license.org)
[](https://travis-ci.org/chriteixeira/twitch-toolkit)
A set of tools to integrate with Twitch API, Twitch Chat and Twitch WebHooks.
[](https://nodei.co/npm/twitch-toolkit/)
To start to use this module, check the [project documentation](https://chriteixeira.github.io/twitch-toolkit/0.0.9/).
## Installation
Using npm:
```shell
$ npm i --save twitch-toolkit
```
## Usage
The library is composed by three independent modules:
* **API**: Provides access to the Helix API.
* **Chat**: Provides access to the chat events through [tmi.js](https://github.com/tmijs) .
* **PubSub**: Provides access to the Twitch PubSub.
* **WebHook**: Provides access to the WebHook topics and events.
The toolkit exports each module and you can access it like this:
```javascript
const {API, Chat, WebHook} = require('twitch-toolkit');
```
Every module must be instanced with the required configs as described in the next sessions.
### API
The API module must be instanced with the following config object:
| Name | Type | Description |
| ------------------- |---------|------------- |
| client_id | string | The client_id to be used to access the API. This is required. |
| client_secret | string | The secret to be used to access the API that requires login. If this is not provided, the restricted methods will thrown an error. |
Example:
```javascript
const { API } = require('twitch-toolkit');
const twitchAPI = new API({client_id: 'id-string', client_secret: 'secret-string'})
```
The API methods are described in the [TwitchApi documentation page](https://chriteixeira.github.io/twitch-toolkit/0.0.9/TwitchApi.html)
### Chat
The API module must be instanced with the config objects described in the [constructor documentation](https://chriteixeira.github.io/twitch-toolkit/0.0.9/TwitchChatEmitter.html#TwitchChatEmitter)
Example:
```javascript
const { Chat } = require('twitch-toolkit');
const twitchChat = new Chat(options)
```
To connected to the channels with the specified user, you'll need to call the connect function:
```javascript
twitch.connect()
```
After that, you'll be able to listen to channel and chat events. You can also disconnect from the chat, if you wish:
```javascript
twitch.disconnect()
```
The methods and events are described in the [TwitchChatEmitter documentation page](https://chriteixeira.github.io/twitch-toolkit/0.0.9/TwitchChatEmitter.html)
### PubSub
The Twitch PubSub implementation, as described in https://dev.twitch.tv/docs/pubsub/ .
The API module must be instanced with the following config object:
| Name | Type | Description |
| ----------|--------- |---------------------- |
| logger | object | The logger object. |
| authToken | string | The Twitch with OAuth token. |
| reconnect | string | Reconnect to Twitch PubSub when disconnected from server. Default: false |
Example:
```javascript
const { WebHook } = require('twitch-toolkit');
const twitchWebHook = new WebHook({
client_id: 'id-string',
callbackUrl: 'http://domain/path/to/cbUrl'
});
```
The Webhook/WebSub requires a public endpoint on the running server/application to receive the data from the hub. Without this, its impossible to make this work.
The methods and events are described in the [PubSub documentation page](https://chriteixeira.github.io/twitch-toolkit/0.0.9/TwitchPubSub.html)
### Webhooks
The Twitch Webhooks implementation, as described in https://dev.twitch.tv/docs/api/webhooks-guide/ .
The API module must be instanced with the following config object:
| Name | Type | Description |
| ----------|--------- |---------------------- |
| client_id | string | The client ID of the user to be passed to the Hub (un)subscribe requests. This is required. |
| callbackUrl | string | The callback URL that will receive the Hub requests. These requests should be forwarded to the handleRequest method to properly handle these data. This is required. |
| logger | object | The logger object. |
Example:
```javascript
const { WebHook } = require('twitch-toolkit');
const twitchWebHook = new WebHook({
client_id: 'id-string',
callbackUrl: 'http://domain/path/to/cbUrl'
});
```
The Webhook/WebSub requires a public endpoint on the running server/application to receive the data from the hub. Without this, its impossible to make this work.
The methods and events are described in the [WebHook documentation page](https://chriteixeira.github.io/twitch-toolkit/0.0.9/TwitchWebHook.html)
## Tests
The module uses [Mocha](https://mochajs.org/) with [Chai](http://www.chaijs.com/) for unit tests and [Istanbul](https://istanbul.js.org/) for test coverage reports.
To run the mocha tests:
```shell
$ npm run test
```
To run tests in debug mode (--inspect-brk)
```shell
$ npm run test:debug
```
To run the tests with the coverage report:
```shell
$ npm run test:coverage
```
To properly run the tests, the following Environment Variables must be set:
| Var Name | Value |
| ------------- |---------------- |
| TWITCH_CLIENT_ID | The Client-ID to be used to make the API calls. |
| TWITCH_CLIENT_SECRET | The Client Secret to be used to make the API calls. |
| TWITCH_CLIENT_USERNAME | The Username related to the Client-ID |
| TWITCH_CLIENT_PASSWORD | The OAUTH password. It can be generated [here](https://twitchapps.com/tmi/). |
| TWITCH_PUBSUB_CHANNEL_ID | The ID for the channel used in the PubSub tests. |
| TWITCH_PUBSUB_AUTH_TOKEN | The OAUTH token for the PubSub with the proper scopes. |
## License
Licensed under the [MIT](https://github.com/chriteixeira/twitch-toolkit/blob/master/LICENSE) License.