diff --git a/package.json b/package.json index f130a91..c27a137 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "service-communication-wrapper", + "name": "@quizizz/service-communication", "version": "1.0.0", "description": "A communication wrapper to support any interservice communication", "main": "index.js", diff --git a/src/http/index.js b/src/http/index.js index b32ba7a..944f868 100644 --- a/src/http/index.js +++ b/src/http/index.js @@ -93,22 +93,29 @@ class HttpCommunication { } async makeRequest(params) { - const { route, method, request } = params; + const { route, method, request, headers = {} } = params; const requestURL = this.createRequestURL(route, request.query); let response; const requestContext = this.contextStorage ? this.contextStorage.getStore() : null; + let finalHeaders = {}; if (requestContext) { - this.axiosConfig.headers = { + finalHeaders = { ...this.axiosConfig.headers, ...this.populateHeadersFromContext(requestContext), - } + ...headers, + }; } + const axiosConfig = { + ...this.axiosConfig, + headers: finalHeaders, + }; + const req = { method, url: requestURL, - ...this.axiosConfig, + ...axiosConfig, } if (request.body) { req['data'] = request.body; @@ -119,47 +126,52 @@ class HttpCommunication { return response.data; } - async post(route, request) { + async post(route, request, headers = {}) { const data = await this.makeRequest({ method: 'post', route, request, + headers, }); return data; } - async put(route, request) { + async put(route, request, headers = {}) { const data = await this.makeRequest({ method: 'put', route, request, + headers, }); return data; } - async patch(route, request) { + async patch(route, request, headers = {}) { const data = await this.makeRequest({ method: 'patch', route, request, + headers, }); return data; } - async delete(route, request) { + async delete(route, request, headers = {}) { const data = await this.makeRequest({ method: 'delete', route, request, + headers, }); return data; } - async get(route, request = {}) { + async get(route, request = {}, headers = {}) { const data = await this.makeRequest({ method: 'get', route, request, + headers, }); return data; } diff --git a/types/index.d.ts b/types/index.d.ts index a1a08dc..5aa3c16 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -24,7 +24,7 @@ export class HttpCommunication { * @typeParam T - Response type provided by the callee * @returns Returns response of the get request */ - get(route: string, request?: { query: Record }): Promise; + get(route: string, request?: { query: Record }, headers?: Record): Promise; /** * Http Put Request @@ -33,7 +33,7 @@ export class HttpCommunication { * @typeParam T - Response type provided by the callee * @returns Returns response of the put request */ - put(route: string, request: { query: Record, body: Record }): Promise; + put(route: string, request: { query: Record, body: Record }, headers?: Record): Promise; /** * Http Delete Request @@ -42,7 +42,7 @@ export class HttpCommunication { * @typeParam T - Response type provided by the callee * @returns Returns response of the put request */ - delete(route: string, request: { query: Record, body: Record }): Promise; + delete(route: string, request: { query: Record, body: Record }, headers?: Record): Promise; /** * Http Patch Request @@ -51,7 +51,7 @@ export class HttpCommunication { * @typeParam T - Response type provided by the callee * @returns Returns response of the put request */ - patch(route: string, request: { query: Record, body: Record }): Promise; + patch(route: string, request: { query: Record, body: Record }, headers?: Record): Promise; /** * Http Post Request @@ -60,5 +60,5 @@ export class HttpCommunication { * @typeParam T - Response type provided by the callee * @returns Returns response of the post request */ - post(route: string, request: { query: Record, body: Record }): Promise; + post(route: string, request: { query: Record, body: Record }, headers?: Record): Promise; } \ No newline at end of file