@dta5/npm-dta-sdk
v6.0.28
Published
DTA Standard Development Kit
Downloads
6
Readme
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: '[email protected]' }, 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: '[email protected]' }, 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
andpatch
) - 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 whenshouldHandle502error
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.