UNPKG

@api.global/typedrequest

Version:

A TypeScript library for making typed requests towards APIs, including facilities for handling requests, routing, and virtual stream handling.

75 lines 6.23 kB
import * as plugins from './plugins.js'; import { VirtualStream } from './typedrequest.classes.virtualstream.js'; import { TypedResponseError } from './typedrequest.classes.typedresponseerror.js'; import { TypedRouter } from './typedrequest.classes.typedrouter.js'; import { TypedTarget } from './typedrequest.classes.typedtarget.js'; const webrequestInstance = new plugins.webrequest.WebRequest(); export class TypedRequest { /** * @param postEndPointArg * @param methodArg */ constructor(postTarget, methodArg) { if (typeof postTarget === 'string') { this.urlEndPoint = postTarget; } else { this.typedTarget = postTarget; } this.method = methodArg; } /** * fires the request */ async fire(fireArg, useCacheArg = false) { let payloadSending = { method: this.method, request: fireArg, response: null, correlation: { id: plugins.isounique.uni(), phase: 'request', }, }; // lets preprocess the payload payloadSending = VirtualStream.encodePayloadForNetwork(payloadSending, { sendMethod: (payloadArg) => { return this.postTrObject(payloadArg); } }); let payloadReceiving; payloadReceiving = await this.postTrObject(payloadSending, useCacheArg); // lets preprocess the response payloadReceiving = VirtualStream.decodePayloadFromNetwork(payloadReceiving, { sendMethod: (payloadArg) => { return this.postTrObject(payloadArg); } }); return payloadReceiving.response; } async postTrObject(payloadSendingArg, useCacheArg = false) { let payloadReceiving; if (this.urlEndPoint) { const response = await webrequestInstance.postJson(this.urlEndPoint, payloadSendingArg, useCacheArg); payloadReceiving = response; } else { payloadReceiving = await this.typedTarget.post(payloadSendingArg); } if (payloadReceiving.error) { console.error(`Got an error ${payloadReceiving.error.text} with data ${JSON.stringify(payloadReceiving.error.data, null, 2)}`); if (!payloadReceiving.retry) { throw new TypedResponseError(payloadReceiving.error.text, payloadReceiving.error.data); } return null; } if (payloadReceiving.retry) { console.log(`server requested retry for the following reason: ${payloadReceiving.retry.reason}`); await plugins.smartdelay.delayFor(payloadReceiving.retry.waitForMs); // tslint:disable-next-line: no-return-await payloadReceiving = await this.postTrObject(payloadSendingArg, useCacheArg); } return payloadReceiving; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRyZXF1ZXN0LmNsYXNzZXMudHlwZWRyZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHlwZWRyZXF1ZXN0LmNsYXNzZXMudHlwZWRyZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXBFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRS9ELE1BQU0sT0FBTyxZQUFZO0lBYXZCOzs7T0FHRztJQUNILFlBQVksVUFBZ0MsRUFBRSxTQUFzQjtRQUNsRSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBcUIsRUFBRSxjQUF1QixLQUFLO1FBQ25FLElBQUksY0FBYyxHQUFpRDtZQUNqRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLE9BQU87WUFDaEIsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUU7Z0JBQ1gsRUFBRSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMzQixL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