@dta5/npm-dta-sdk

6.0.28 • Public • Published

npm-dmx-sdk

Package to handle shared microservice behaviors.

A simple example:

// you should specify DMX_SERVICE env (ex. `Auctions`) which is microservice sender name
const { Authentication } = require('@dmx/npm-dmx-sdk');

const { status, body } = await Authentication.get({
  path: '/users/user-1',
  jwt: { user: { _id: 'user-1', username: 'foo@bar.com' }, dealerId: 'dealer-1' },
});

If NODE_ENV or DMX_SERVICE are not set in process.env, requiring the module will return a function which accepts a configuration object:

const envConfig = { NODE_ENV: 'development-one', DMX_SERVICE: 'Mobile' };
const { Authentication } = require('@dmx/npm-dmx-sdk')(envConfig);

const { status, body } = await Authentication.get({
  path: '/users/user-1',
  jwt: { user: { _id: 'user-1', username: 'foo@bar.com' }, dealerId: 'dealer-1' },
});

A sample returned value:

Promise.resolve({
  status: 200,
  body: {
    foo: 'bar',
  },
  text: '{"foo":"bar"}',
  headers: { // only the custom explicit headers, not the default ones
    'x-total-count': '456',
  },
});

A sample returned value for 4.. and 5.. responses:

Promise.reject({
  response:
    status: 400,
    text: 'invalid email',
    headers: {}
  }
});

Supported methods:

  • get
  • post
  • put
  • patch
  • delete

Supported microservices:

  • ForestAdmin
  • AdminDashboardServer
  • AdminDashboardClient
  • Appraisals
  • Auctions
  • Authentication
  • DashboardServer
  • DashboardClient
  • Gateway (some of microservices connect via gateway so use Gateway explicitly only if a microservice connects without gateway)
  • Grades
  • Ingestion
  • Inventory
  • MarketData
  • Media
  • Notifications
  • NotificationsNew
  • Payments
  • Reports
  • Scheduling
  • VehicleInfo
  • Webhooks
  • WebSockets

Fields which can be passed into the methods:

  • path: String - path including the parameters but excluding the query string
  • query: Object - query string
  • payload: Object (only in post, put and patch) - request body
  • headers: Object - custom request headers
  • jwt: Object|String - decoded (if an Object) or encoded (if a String) JSON Web Token
  • throttle: Throttle<active: Boolean, rate: Number, ratePer: Number, concurrent: Number> - instance of Throttle class (const { Throttle } = require('@dmx/npm-dmx-sdk')) configured in format specified in https://github.com/leviwheatcroft/superagent-throttle
  • responseType: String - according to https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType
  • shouldHandle502error: Boolean - get always handles 502 error (repeats max 5 times) but for other methods 502 is handled only when shouldHandle502error is set to true, it should be used carefully, only for idempotent endpoints (calling multiple times should result in the same data stored in db as calling a single time except of logged info)

If jwt is not specified, a default JWT is created based on the DMX_SERVICE env.

Readme

Keywords

none

Package Sidebar

Install

npm i @dta5/npm-dta-sdk

Weekly Downloads

0

Version

6.0.28

License

UNLICENSED

Unpacked Size

169 kB

Total Files

24

Last publish

Collaborators

  • efestennis93