@deltares/fews-web-oc-utils
Version:
Util Library for common Web OC functionality
68 lines • 3.06 kB
JavaScript
;
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