UNPKG

@deltares/fews-web-oc-utils

Version:

Util Library for common Web OC functionality

68 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PiRestService = void 0; const requestOptions_js_1 = require("./requestOptions.js"); const defaultParser_js_1 = require("../parser/defaultParser.js"); class PiRestService { webserviceUrl; transformRequest; constructor(webserviceUrl, transformRequestFn) { this.webserviceUrl = webserviceUrl; if (transformRequestFn !== undefined) { this.transformRequest = transformRequestFn; } else { async function transformRequestFn(request) { return request; } this.transformRequest = transformRequestFn; } } async getDataWithParser(url, requestOption, parser) { const requestUrl = requestOption.relativeUrl ? this.webserviceUrl + url : url; const dataRequestResult = {}; const requestParameters = {}; requestParameters.method = "GET"; const request = new Request(requestUrl, requestParameters); const res = await fetch(await this.transformRequest(request)); if (!res.ok) throw new Error('Fetch Error', { cause: res }); return await this.processResponse(dataRequestResult, res, requestUrl, parser); } async postDataWithParser(url, requestOption, parser, body, headers) { const requestUrl = requestOption.relativeUrl ? this.webserviceUrl + url : url; const dataRequestResult = {}; const requestParameters = {}; requestParameters.method = "POST"; requestParameters.body = body; requestParameters.headers = headers; const request = new Request(requestUrl, requestParameters); const res = await fetch(await this.transformRequest(request)); if (!res.ok) throw new Error('Fetch Error', { cause: res }); return await this.processResponse(dataRequestResult, res, requestUrl, parser); } async getData(url) { const requestOption = new requestOptions_js_1.RequestOptions(); requestOption.relativeUrl = !url.startsWith("http"); return this.getDataWithParser(url, requestOption, new defaultParser_js_1.DefaultParser()); } async postData(url, body, headers = { "Content-Type": "application/json" }) { const requestOption = new requestOptions_js_1.RequestOptions(); requestOption.relativeUrl = !url.startsWith("http"); return this.postDataWithParser(url, requestOption, new defaultParser_js_1.DefaultParser(), body, headers); } async processResponse(dataRequestResult, res, url, parser) { dataRequestResult.responseCode = res.status; dataRequestResult.contentType = res.headers.get('content-type'); try { dataRequestResult.data = await parser.parse(res); } catch (e) { throw new Error(`Parse Error for response ${url}.`, { cause: e }); } return dataRequestResult; } } exports.PiRestService = PiRestService; //# sourceMappingURL=piRestService.js.map