diff --git a/package.json b/package.json index bb1727b..b3ebf7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ainize-team/ainize-js", - "version": "1.0.4", + "version": "1.0.5", "main": "dist/ainize.js", "types": "dist/ainize.d.ts", "scripts": { diff --git a/src/controllers/serviceController.ts b/src/controllers/serviceController.ts index f5bbfbe..7f636b1 100644 --- a/src/controllers/serviceController.ts +++ b/src/controllers/serviceController.ts @@ -77,20 +77,24 @@ export default class ServiceController { return await this.ain.getValue(creditHistoryPath) as creditHistories; } - async request(serviceName: string, requestData: any) : Promise { + async request(serviceName: string, requestData: any, requestKey?: string) : Promise { this.checkRunning(serviceName); const result = await new Promise(async (resolve, reject) => { - const requestKey = Date.now(); - const requesterAddress = this.ain.getAddress(); - const responsePath = Path.app(serviceName).response(requesterAddress, requestKey.toString()); - await this.handler.subscribe(responsePath, resolve); - const requestPath = Path.app(serviceName).request(requesterAddress, requestKey); - const requestOp = buildSetOperation("SET_VALUE", requestPath, requestData); - const txBody = buildTxBody(requestOp); - await this.ain.sendTransaction(txBody); - return requestKey; + requestKey = requestKey || Date.now().toString(); + try { + const requesterAddress = this.ain.getAddress(); + const responsePath = Path.app(serviceName).response(requesterAddress, requestKey.toString()); + await this.handler.subscribe(responsePath, resolve); + const requestPath = Path.app(serviceName).request(requesterAddress, requestKey); + const requestOp = buildSetOperation("SET_VALUE", requestPath, requestData); + const txBody = buildTxBody(requestOp); + await this.ain.sendTransaction(txBody); + } catch (e: any) { + if (e instanceof Error) + return reject(new Error(e.message)); + } }); - return result as string; + return result; } async run(serviceName: string): Promise { diff --git a/src/service.ts b/src/service.ts index 24239da..5f94786 100644 --- a/src/service.ts +++ b/src/service.ts @@ -79,9 +79,9 @@ export default class Service { * @param {string} requestData String data for request to service. * @returns {string} Response data from service. */ - async request(requestData: any) { + async request(requestData: any, requestKey?: string) { this.isLoggedIn(); - return await this.serviceController.request(this.serviceName, requestData); + return await this.serviceController.request(this.serviceName, requestData, requestKey); } /**