1.0.4 • Published 6 months ago

botbye-node-core v1.0.4

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

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();
}

...
1.0.4

6 months ago

1.0.3

8 months ago

1.0.2

1 year ago

1.0.1

2 years ago

1.0.0

2 years ago