As of 15 March 2023 this project is no longer updated or maintained.
Fastify plugin providing utility functions for Twitch Extension Backend Services (EBS).
npm install fastify-twitch-ebs-tools
git clone https://github.com/lwojcik/fastify-twitch-ebs-tools.git
cd fastify-twitch-ebs-tools
npm install
npm run build
Register as a plugin to get access to additional methods.
Example below assumes Twitch token to be sent via request headers.
const fastify = require("fastify");
fastify.register(require("fastify-twitch-ebs-tools"), {
secret: "twitch shared secret",
disabled: false,
});
fastify.get("/config/:channelId", (req, reply) => {
const { token } = req.headers;
const { channelId } = req.params;
const valid = fastify.twitchEbs.validatePermission(
token,
channelId,
"broadcaster"
);
if (valid) {
// do something and send the reply back
reply.send(/* reply object */);
} else {
// error 400
}
});
fastify.listen(3000, (error) => {
if (error) throw error;
});
-
secret
- Twitch shared secret used to sign and verify JWTs (required). The plugin will throw an error if no secret is provided. Required. -
disabled
- iftrue
, all validation methods will returntrue
. Useful for temporarily disabling route authentication for debugging purposes. Does not affectvalidateToken()
method. Defaults tofalse
. Optional.
All plugin methods pass arguments to relevant methods of twitch-ebs-tools
. Refer to twitch-ebs-tools
documentation to get more details.
Available methods:
-
fastify.twitchEbs.validatePermission(token, channelId, roles, ignoreExpiration?)
-
fastify.twitchEbs.verifyChannelIdAndRole(payload, channelId, role)
Contributions of any kind are welcome.
You can contribute to Fastify-twitch-ebs-tools by:
- submiting bug reports or feature suggestions
- improving documentation
- submitting pull requests
Before contributing be sure to read Contributing Guidelines and Code of Conduct.
To all who contribute code, improve documentation, submit issues or feature requests - thank you for making Fastify-twitch-ebs-tools even better!
We maintain an AUTHORS file where we keep a list of all project contributors. Please consider adding your name there with your next PR.
This project is not authored, affiliated or endorsed in any way by Twitch.tv.