UNPKG

twitch-toolkit

Version:

A set of tools to integrate with Twitch API, Twitch Chat and Twitch WebHooks.

162 lines (111 loc) 6.03 kB
# twitch-toolkit [![License](http://img.shields.io/:license-mit-blue.svg?style=flat)](http://doge.mit-license.org) [![Build Status](https://travis-ci.org/chriteixeira/twitch-toolkit.svg?branch=master)](https://travis-ci.org/chriteixeira/twitch-toolkit) A set of tools to integrate with Twitch API, Twitch Chat and Twitch WebHooks. [![NPM](https://nodei.co/npm/twitch-toolkit.png?downloads=true&downloadRank=true)](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.