Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Stateford/twitch-api

Easy node interaction with the twitch API, using promises
https://github.com/Stateford/twitch-api

nodejs twitch twitch-api twitchtv twitchtv-api

Last synced: 26 days ago
JSON representation

Easy node interaction with the twitch API, using promises

Awesome Lists containing this project

README

        

# TWITCH-API
### The twitch API v5 made easy

## Twitch Class

### Starting
The class object takes two parameters in the object, the client ID and the client secret.
Create the a new object with the correct parameters to use the class.

The package [dotenv](https://github.com/motdotla/dotenv) is recommended for keeping your client information secret.
```js
const Twitch = require("twitch.tv-api");
const twitch = new Twitch({
id: "YOUR ID HERE",
secret: "YOUR SECRET HERE"
});
```

### Methods

| METHOD | DESCRIPTION |
|:--------:|:-----------:|
| `.getUser(user)` | Returns information about a user |
| `.getFeaturedStreams(options*)` | Returns twitch's featured streams |
| `.getTopStreams(options*)` | Returns the current top streams |
| `.getTopGames(options*)` | Returns the top games |
| `.getUsersByGame(game)` | Returns users by game |
| `.getStreamUrl(user)` | Returns the RTMP stream URL |
| `.searchChannels(query, limit*, offset*)` | Returns a list of channels |
| `.searchStreams(query, limit*, offset*)` | Returns a list of streams |
| `.searchGames(query, live*)` | Returns a list of games |
*Parameter is optional or has default values.

### Using

The twitch api module uses promises to resolve/reject data.

```js
const Twitch = require("twitch.tv-api");
const twitch = new Twitch({
id: "YOUR ID HERE"
secret: "YOUR SECRET HERE"
});

twitch.getUser("idietmoran")
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});

// making requests with optional parameters
const optionalParams = {game: 'StarCraft: Brood War', language: 'es'};
twitch.getTopStreams(optionalParams)
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});

twitch.getFeaturedStreams({limit: 5})
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});

// non es6
twitch.getTopStreams()
.then(function(data) {
console.log(data);
})
.catch(function(error) {
console.error(error);
});

// using async/await
async function foo() {
let data = await twitch.getTopStreams();
console.log(data);
}

// with error handling
async function foo() {
try {
let data = await twitch.getTopStreams();
console.log(data);
} catch(err) {
throw err;
}
}
```

### Example

Here is an example of routing the requests through a [Hapi](https://github.com/hapijs/hapi) server.

```js
require("dotenv").config();
const Hapi = require('hapi');
const Twitch = require("twitch.tv-api");

const server = new Hapi.Server({})

const twitch = new Twitch({
id: process.env.TWITCH_ID,
secret: process.env.TWITCH_SECRET
});

server.connection({
port: process.env.PORT,
host: process.env.HOST,
});

server.route({
method: 'GET',
path: '/twitch/api/game/{game}',
handler: (request, reply) => {
twitch.getUsersByGame(request.params.game)
.then(reply)
.catch(reply);
}
});

server.start(err => {

if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});
```