1.0.0 • Published 6 months ago

botbye-node-http v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
6 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('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

  const botByeResponse = await botbye.validateRequest(botbyeToken, req);

  if (botByeResult.result?.isBot) {
  ...
  }
...
})

Examples of botByeResponse:

Bot detected:

{
  reqId: 'f77b2abd-c5d7-44f0-be4f-174b04876583'
  result: {
    isBot: true
  }
,
  error: null
}

Bot not detected:

{
  reqId: 'f77b2abd-c5d7-44f0-be4f-174b04876583'
  result: {
    isBot: false
  }
,
  error: null
}

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('MY_SERVER_KEY');

const server = http.createServer(async (req, res) => {
  const botbyeToken = req.headers['botbye-challenge']   // get token from header or any place you store it

  const customFileds = [
    'my custom field 1 value',
    'my custom field 2 value',
    'my custom field 3 value'
  ];

  /**
   * @param {String} botbyeToken - Token from client side
   * @param {Object} request - http request
   * @param optional {Array} customFields - Additional fields
   * @return {Promise} - botByeResponse promise
   */

  const botByeResponse = await botBye.validateRequest(botbyeToken, req, customFileds);

  const isBot = botByeResponse.result?.isBot;

  res.statusCode = isBot ? 403 : 200;
  res.end();
})

const PORT = 3000;

server.listen(PORT, () => {
...
})
1.0.0

6 months ago