botbye-node-http
v1.0.3
Published
## Install
Downloads
15
Readme
HTTP
Install
npm i botbye-node-http
or
yarn add botbye-node-http
Usage
1. Import botbye
module:
const botbye = require('botbye-node-http')
2. Call init
with SERVER_KEY:
const validateRequest = botbye.init({
serverKey: 'MY_SERVER_KEY'
});
3. Use validateRequest
on handlers where you need bot protection
http.createServer(async (req, res) => {
const botbyeToken = req.headers['botbye-challenge'] // get token from header or any place you store it
/**
* Additional custom fields for linking request
**/
const customFields = {
someKey: "some-value"
}
const options = {
token: botbyeToken,
request: req,
customFileds
}
/**
* @param {Object} options - Options for request validation
* @return {Promise} - botByeResponse promise
*/
const botByeResponse = await botbye.validateRequest(options);
if (botByeResult.result?.isBot) {
...
}
...
})
Examples of botByeResponse:
Bot detected:
{
"reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
"result": {
"isAllowed": false
},
"error": null
}
Bot not detected:
{
"reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
"result": {
"isAllowed": true
},
"error": null
}
Ban by rule:
{
"reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
"result": {
"isAllowed": false
},
"error": {
"message": "Banned by rule: ban by country"
}
}
Invalid serverKey:
{
"reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
"result": null,
"error": {
"message": "[BotBye] Bad Request: Invalid Server Key"
}
}
4. Full code example
const http = require('http');
const botbye = require('botbye-node-http')
botbye.init({
serverKey: 'MY_SERVER_KEY'
});
const server = http.createServer(async (req, res) => {
const botbyeToken = req.headers['BotBye-Token'] // get token from header or any place you store it
const options = {
token: botbyeToken,
request: req
}
const botByeResponse = await botBye.validateRequest(options);
const isBot = botByeResponse.result?.isAllowed ?? true;
res.statusCode = isAllowed ? 200 : 403;
res.end();
})
const PORT = 3000;
server.listen(PORT, () => {
...
})