1.0.3 • Published 8 months ago

botbye-node-http v1.0.3

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

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, () => {
...
})
1.0.3

8 months ago

1.0.2

1 year ago

1.0.0

2 years ago