botbye-node-core
v1.0.4
Published
#### In case when you use custom library
Downloads
69
Readme
Core
In case when you use custom library
Install
npm i botbye-node-core
or
yarn add botbye-node-core
Usage
1. Import botbye
module:
const botbye = require('botbye-node-core')
2. Call init
with SERVER_KEY:
const validateRequest = botbye.init({
serverKey: 'MY_SERVER_KEY'
});
3. Use validateRequest
on handlers where you need bot protection
In validateRequest pass token, headers array, and requestInfo
/**
* All request headers
**/
const headers = {
'host': 'example.com',
'some-header': 'value1, value2'
};
/**
* Information about the request
**/
const requestInfo = {
'request_uri': "/path",
'request_method': "GET",
'remote_addr': request.connection.remoteAddress, // User IP
}
/**
* Additional custom fields for linking request
**/
const customFields = {
someKey: "some-value"
}
const options = {
token, // BotBye token from client-side
headers,
requestInfo,
customFields
}
/**
* @param {Object} options - Options for request validation
* @return {Promise} - botByeResponse promise
*/
const botByeResponse = await botbye.validateRequest(options);
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 botbye = require('botbye-node-core')
botbye.init({
serverKey: 'MY_SERVER_KEY'
});
...
const handler = async (req, res) => {
const botbyeToken = req.headers['BotBye-Token']; // get token from header or any place you store it
const headers = Object.entries(req.headers);
const requestInfo = {
'request_uri': req.uri,
'request_method': req.method,
'remote_addr': req.remoteAddress,
}
const options = {
token: botbyeToken,
headers,
requestInfo,
}
const botByeResponse = await botBye.validateRequest(options);
const isAllowed = botByeResponse.result?.isAllowed ?? true;
res.statusCode = isAllowed ? 200 : 403;
res.end();
}
...