@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
97 lines • 4.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.overwriteRequestHeaders = void 0;
var tslib_1 = require("tslib");
var utils_1 = require("../../utils");
var overwriteRequestHeaders = function (dto) {
var _a;
var overwriteValues = dto.overwriteValues, pmOperation = dto.pmOperation, oaOperation = dto.oaOperation, globals = dto.globals;
if (!(overwriteValues instanceof Array))
return pmOperation;
var headerKeys = pmOperation.item.request.headers.map(function (_a) {
var key = _a.key;
return key;
});
var insertNewKeys = overwriteValues.filter(function (x) { return !headerKeys.includes(x.key); });
pmOperation.item.request.headers.each(function (pmHeader) {
overwriteValues.forEach(function (overwriteItem) {
if (!((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.key) && (pmHeader === null || pmHeader === void 0 ? void 0 : pmHeader.key) && overwriteItem.key === pmHeader.key) ||
overwriteItem.insert === false) {
return;
}
var generatedName = (0, utils_1.parseTpl)({
template: overwriteItem.value,
oaOperation: oaOperation,
options: {
casing: globals === null || globals === void 0 ? void 0 : globals.variableCasing
}
});
var overwriteValue = (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) && (0, utils_1.hasTpl)(overwriteItem.value) ? generatedName : overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value;
var hasValue = false;
if (overwriteValue !== undefined) {
hasValue = true;
var orgValue = pmHeader.value;
var newValue = overwriteValue;
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.overwrite) === false && orgValue) {
newValue = orgValue + newValue;
}
pmHeader.value =
(newValue !== undefined && newValue !== null) || 'boolean' === typeof newValue
? "".concat(newValue).toString()
: '';
}
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.disable) === false || hasValue) {
pmHeader.disabled = false;
}
if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.disable) === true) {
pmHeader.disabled = true;
}
if (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.description) {
pmHeader.description = overwriteItem.description;
}
pmOperation.item.request.upsertHeader(pmHeader);
});
});
var authorizationType = ['basic', 'bearer', 'apikey'];
var authConfig = pmOperation.item.getAuth();
var authType = (authConfig === null || authConfig === void 0 ? void 0 : authConfig.type) || undefined;
if ((authType && authorizationType.includes(authType)) || authConfig === undefined) {
if (overwriteValues.some(function (obj) { return obj.key && obj.key.toLowerCase() === 'authorization'; })) {
(_a = pmOperation.item.request.auth) === null || _a === void 0 ? void 0 : _a.clear(authType);
pmOperation.item.request.authorizeUsing('noauth');
}
}
overwriteValues
.filter(function (_a) {
var remove = _a.remove;
return remove;
})
.map(function (headerToRemove) {
pmOperation.item.request.headers.remove(function (header) {
return header.key === headerToRemove.key;
}, null);
});
insertNewKeys
.filter(function (overwriteItem) { return !(overwriteItem.insert === false || overwriteItem.remove === true); })
.map(function (headerToInsert) {
var newPmHeader = {
key: headerToInsert.key,
value: '',
disabled: false
};
if (headerToInsert.value)
newPmHeader.value = headerToInsert.value;
if (headerToInsert.disable === true)
newPmHeader.disabled = true;
if (headerToInsert.description)
newPmHeader.description = headerToInsert.description;
pmOperation.item.request.addHeader(newPmHeader);
if ((pmOperation === null || pmOperation === void 0 ? void 0 : pmOperation.requestHeaders) && Array.isArray(pmOperation.requestHeaders)) {
var disabled = newPmHeader.disabled, reqHeader = tslib_1.__rest(newPmHeader, ["disabled"]);
pmOperation.requestHeaders.push(reqHeader);
}
});
return pmOperation;
};
exports.overwriteRequestHeaders = overwriteRequestHeaders;
//# sourceMappingURL=overwriteRequestHeaders.js.map