@soinlabs/request

1.0.20 • Public • Published

Request

Request library based on HTTP promise for SOIN

codecov npm version npm downloads

This repo/package exports 3 libraries:

Request: It's a simple and lightweight library based on HTTP Promise queries used as a function, ready to use anywhere.

RequestTracking: It's a complex library based on HTTP Promise queries used as a Class, it's required to instance and pass a Sequelize object before to use

RequestScheduler: It's another library used to retrieve fetch the HTTP queries inside in the table WebRequestLogs, it's required to instance and pass a Sequelize object before to use

How to use it?

Request

const { Request } = require('@soinlabs/request')
const response = await Request(params)
- Where
   *  params - Object
   *  {string}  params.method - Default GET
   *  {object}  params.headers - Default { content-type: application/json }
   *  {string}  params.url - Required
   *  {string}  params.responseType - Default json
   *  {object}  params.data - Default null
   *  {boolean}  params.throwError - Default false
	 *  {array} 	return response - the data from the URL.

RequestTracking

Insert the next SQL script in the database need it:

-- WebRequestLogs definition
CREATE TABLE `WebRequestLogs` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `data` JSON, `retries` INTEGER, `attempts` INTEGER, `status` INTEGER, `response` JSON, `error` JSON, `method` VARCHAR(255), `url` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);

Add the model in package/model or whatever place where is it the Squeeze models/objects

module.exports = (sequelize, DataTypes) => {
	const WebRequestLog = sequelize.define(
		'WebRequestLog',
		{
			id: {
				allowNull: false,
				autoIncrement: true,
				primaryKey: true,
				type: DataTypes.INTEGER,
			},
			data: { type: JSON },
			retries: { type: DataTypes.INTEGER },
			attempts: { type: DataTypes.INTEGER },
			status: {
				type: DataTypes.INTEGER,
				enum: (-1, 0, 1),
			},
			response: { type: JSON },
			error: { type: JSON },
			method: { type: DataTypes.STRING },
			url: { type: DataTypes.STRING },
		},
		{
			tableName: 'WebRequestLogs',
		}
	)
	return WebRequestLog
}

And finally, the implementation of RequestTracking

const { RequestTracking } = require('@soinlabs/request-tracking')
const { WebRequestLog } = require('models/WebRequestLog')

const request = new RequestTracking(WebRequestLog)
const response = await request.RequestTracking(params)
- Where
   *  params - Object
   *  {string}  params.method - Default GET
   *  {object}  params.headers - Default { content-type: application/json }
   *  {string}  params.url - Required
   *  {string}  params.responseType - Default json
   *  {object}  params.data - Default null
   *  {number}  params.retries - Default null
   *  {boolean} params.log - Default null
	 *  {array} 	return response - the data from the URL.

RequestScheduler

Implemente RequestScheduler in cronjobs or scheduler logic

const { RequestScheduler } = require('@soinlabs/ibs/request-scheduler')
const { WebRequestLog } = require('models/WebRequestLog')

const requestScheduler = new RequestScheduler(WebRequestLog)
await requestScheduler.start(limit)
- Where
*  {number} limit - Default 10

Package Sidebar

Install

npm i @soinlabs/request

Weekly Downloads

330

Version

1.0.20

License

MIT

Unpacked Size

172 kB

Total Files

21

Last publish

Collaborators

  • pblanco27-soin
  • ema-cr
  • msanchezcr
  • darkj24
  • lchavarria