UNPKG

tubular-common

Version:

Tubular Common Models and Data Transformer

74 lines 2.48 kB
const responseKeys = [ 'AggregationPayload', 'Counter', 'CurrentPage', 'FilteredRecordCount', 'Payload', 'TotalPages', 'TotalRecordCount', ]; const expectedStructureKeys = JSON.stringify([ 'aggregationpayload', 'counter', 'currentpage', 'filteredrecordcount', 'payload', 'totalpages', 'totalrecordcount', ]); class TubularHttpClient { static resolveRequest(request) { const httpCast = request; if (httpCast.request) { return httpCast.request; } return request || request; } static getRequest(objRequest, gridRequest) { if (typeof objRequest === 'string') { return new Request(objRequest, { body: JSON.stringify(gridRequest), headers: new Headers({ 'Content-Type': 'application/json;charset=utf-8' }), method: 'POST', }); } objRequest.headers.append('Content-Type', 'application/json;charset=utf-8'); return new Request(objRequest.url, { body: JSON.stringify(gridRequest), headers: objRequest.headers, method: objRequest.method, }); } static isValidResponse(data) { return (data && expectedStructureKeys === JSON.stringify(Object.keys(data) .map((x) => x.toLowerCase()) .sort())); } static fixResponse(responseObject) { // biome-ignore lint/complexity/noForEach: <explanation> responseKeys.forEach((k) => { if (Object.hasOwnProperty.call(responseObject, k)) { responseObject[k.charAt(0).toLowerCase() + k.slice(1)] = responseObject[k]; delete responseObject[k]; } }); } request; constructor(request) { this.request = TubularHttpClient.resolveRequest(request); } async fetch(gridRequest) { const response = await fetch(TubularHttpClient.getRequest(this.request, gridRequest)); if (response.status >= 200 && response.status < 300) { const responseBody = await response.text(); const responseObject = responseBody ? JSON.parse(responseBody) : {}; TubularHttpClient.fixResponse(responseObject); return responseObject; } throw new Error('Invalid request'); } } export default TubularHttpClient; //# sourceMappingURL=TubularHttpClient.js.map