UNPKG

@sap/subaccount-destination-service-provider

Version:

Provide service consumption of SAP subaccount services

74 lines 3.48 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleBusinessItemsStream = handleBusinessItemsStream; exports.filterDestinationWebideEnabled = filterDestinationWebideEnabled; exports.htmlResponseInterceptor = htmlResponseInterceptor; exports.isHtmlResponse = isHtmlResponse; exports.isHtmlLoginForm = isHtmlLoginForm; const fs_1 = require("fs"); const stream_json_1 = require("stream-json"); const StreamArray_1 = require("stream-json/streamers/StreamArray"); const Pick_1 = require("stream-json/filters/Pick"); function handleBusinessItemsStream(filePath, itemProcessor, endProcessor) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { const jsonStream = (0, fs_1.createReadStream)(filePath); const parserInstance = jsonStream .pipe((0, stream_json_1.parser)()) .pipe((0, Pick_1.pick)({ filter: "data" })) .pipe((0, StreamArray_1.streamArray)()); parserInstance.on("data", ({ value }) => { itemProcessor(value, () => { parserInstance.pause(); jsonStream.destroy(); resolve(endProcessor()); }); }); jsonStream.on("end", () => resolve(endProcessor())); jsonStream.on("close", () => resolve(endProcessor())); jsonStream.on("error", (error) => reject(error)); parserInstance.on("error", (error) => reject(error)); }); }); } function filterDestinationWebideEnabled(destinationConfiguration) { const webIDEEnabled = destinationConfiguration.WebIDEEnabled || ""; if (webIDEEnabled != "true") { return false; } return true; } function htmlResponseInterceptor(response) { var _a; if (((_a = response.headers) === null || _a === void 0 ? void 0 : _a["sap-err-id"]) === "ICFLOGONREQUIRED" || isHtmlLoginForm(response)) { const err = new Error(); err.response = { status: 401 }; err.isAxiosError = true; err.toJSON = () => { return { status: 401 }; }; throw err; } return response; } function isHtmlResponse(response) { var _a, _b; const contentType = ((_a = response.headers) === null || _a === void 0 ? void 0 : _a["Content-Type"]) || ((_b = response.headers) === null || _b === void 0 ? void 0 : _b["content-type"]); if (typeof contentType === "string" && contentType.startsWith("text/html")) { return true; } return false; } function isHtmlLoginForm(response) { return (isHtmlResponse(response) && typeof response.data === "string" && !!response.data.match(/log(?:in|on)|sign\s*in/i)); } //# sourceMappingURL=retrieverUtils.js.map