1.0.0 • Published 6 months ago

botbye-node-express v1.0.0

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

Express

Install

npm i botbye-node-express

or

yarn add botbye-node-express

Usage

1. Import botbye module:

const botbye = require('botbye-node-express')

2. Call init with SERVER_KEY:

const validateRequest = botbye.init('MY_SERVER_KEY');

3. Use validateRequest on handlers where you need bot protection

app.get('/', 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 - express request
   * @param optional {Array} customFields - Additional fields
   * @return {Promise} - botByeResponse promise
   */
  const botByeResponse = await botbye.validateRequest(botbyeToken, req, customFileds);

  const isBot = botByeResponse.result?.isBot;

  if (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 express = require('express')
const botbye = require('botbye-node-express')

const app = express();

botbye.init('MY_SERVER_KEY');

app.get('/', 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);

  const isBot = botByeResponse.result?.isBot;

  res.status(isBot ? 403 : 200);
  res.send();
})

const PORT = 3000;

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

6 months ago