@sap-cloud-sdk/http-client
Advanced tools
Comparing version 2.0.0-20211112070725.0 to 2.0.0-20211112072110.0
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
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()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.buildCsrfFetchHeaders = exports.buildCsrfHeaders = void 0; | ||
var util_1 = require("@sap-cloud-sdk/util"); | ||
var _1 = require("."); | ||
var logger = (0, util_1.createLogger)({ | ||
const util_1 = require("@sap-cloud-sdk/util"); | ||
const _1 = require("."); | ||
const logger = (0, util_1.createLogger)({ | ||
package: 'core', | ||
@@ -64,14 +17,8 @@ messageContext: 'csrf-token-header' | ||
*/ | ||
function buildCsrfHeaders(destination, requestConfig) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var csrfHeaders; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, makeCsrfRequest(destination, requestConfig)]; | ||
case 1: | ||
csrfHeaders = _a.sent(); | ||
validateCsrfTokenResponse(csrfHeaders); | ||
return [2 /*return*/, (0, util_1.pickNonNullish)(__assign(__assign({}, (0, util_1.pickIgnoreCase)(csrfHeaders, 'x-csrf-token')), { cookie: buildCookieHeaderValue((0, util_1.pickValueIgnoreCase)(csrfHeaders, 'set-cookie')) }))]; | ||
} | ||
}); | ||
async function buildCsrfHeaders(destination, requestConfig) { | ||
const csrfHeaders = await makeCsrfRequest(destination, requestConfig); | ||
validateCsrfTokenResponse(csrfHeaders); | ||
return (0, util_1.pickNonNullish)({ | ||
...(0, util_1.pickIgnoreCase)(csrfHeaders, 'x-csrf-token'), | ||
cookie: buildCookieHeaderValue((0, util_1.pickValueIgnoreCase)(csrfHeaders, 'set-cookie')) | ||
}); | ||
@@ -86,33 +33,41 @@ } | ||
function buildCsrfFetchHeaders(headers) { | ||
var _a; | ||
var fetchHeader = !(0, util_1.pickValueIgnoreCase)(headers, 'x-csrf-token') && { | ||
const fetchHeader = !(0, util_1.pickValueIgnoreCase)(headers, 'x-csrf-token') && { | ||
'x-csrf-token': 'Fetch' | ||
}; | ||
var contentLengthHeaderKey = (0, util_1.first)(Object.keys((0, util_1.pickIgnoreCase)(headers, 'content-length'))) || | ||
const contentLengthHeaderKey = (0, util_1.first)(Object.keys((0, util_1.pickIgnoreCase)(headers, 'content-length'))) || | ||
'content-length'; | ||
return __assign(__assign(__assign({}, fetchHeader), headers), (_a = {}, _a[contentLengthHeaderKey] = 0, _a)); | ||
return { | ||
...fetchHeader, | ||
...headers, | ||
[contentLengthHeaderKey]: 0 | ||
}; | ||
} | ||
exports.buildCsrfFetchHeaders = buildCsrfFetchHeaders; | ||
function makeCsrfRequest(destination, requestConfig) { | ||
var axiosConfig = __assign(__assign({ method: 'head' }, requestConfig), { headers: buildCsrfFetchHeaders(requestConfig.headers), url: requestConfig.url }); | ||
const axiosConfig = { | ||
method: 'head', | ||
...requestConfig, | ||
headers: buildCsrfFetchHeaders(requestConfig.headers), | ||
url: requestConfig.url | ||
}; | ||
// The S/4 does a redirect if the CSRF token is fetched in case the '/' is not in the URL. | ||
// TODO: remove once https://github.com/axios/axios/issues/3369 is really fixed. Issue is closed but problem stays. | ||
var requestConfigWithTrailingSlash = appendSlash(axiosConfig); | ||
const requestConfigWithTrailingSlash = appendSlash(axiosConfig); | ||
return (0, _1.executeHttpRequest)(destination, requestConfigWithTrailingSlash) | ||
.then(function (response) { return response.headers; }) | ||
.catch(function (error1) { | ||
var headers1 = getResponseHeadersFromError(error1); | ||
.then(response => response.headers) | ||
.catch(error1 => { | ||
const headers1 = getResponseHeadersFromError(error1); | ||
if (hasCsrfToken(headers1)) { | ||
return headers1; | ||
} | ||
logger.warn(new util_1.ErrorWithCause("First attempt to fetch CSRF token failed with the URL: " + requestConfigWithTrailingSlash.url + ". Retrying without trailing slash.", error1)); | ||
var requestConfigWithOutTrailingSlash = removeSlash(axiosConfig); | ||
logger.warn(new util_1.ErrorWithCause(`First attempt to fetch CSRF token failed with the URL: ${requestConfigWithTrailingSlash.url}. Retrying without trailing slash.`, error1)); | ||
const requestConfigWithOutTrailingSlash = removeSlash(axiosConfig); | ||
return (0, _1.executeHttpRequest)(destination, requestConfigWithOutTrailingSlash) | ||
.then(function (response) { return response.headers; }) | ||
.catch(function (error2) { | ||
var headers2 = getResponseHeadersFromError(error2); | ||
.then(response => response.headers) | ||
.catch(error2 => { | ||
const headers2 = getResponseHeadersFromError(error2); | ||
if (hasCsrfToken(headers2)) { | ||
return headers2; | ||
} | ||
logger.warn(new util_1.ErrorWithCause("Second attempt to fetch CSRF token failed with the URL: " + requestConfigWithOutTrailingSlash.url + ". No CSRF token fetched.", error2)); | ||
logger.warn(new util_1.ErrorWithCause(`Second attempt to fetch CSRF token failed with the URL: ${requestConfigWithOutTrailingSlash.url}. No CSRF token fetched.`, error2)); | ||
// todo suggest to disable csrf token handling when the API is implemented | ||
@@ -133,3 +88,3 @@ return {}; | ||
if (!requestConfig.url.endsWith('/')) { | ||
requestConfig.url = requestConfig.url + "/"; | ||
requestConfig.url = `${requestConfig.url}/`; | ||
} | ||
@@ -155,5 +110,5 @@ return requestConfig; | ||
if (cookies && cookies.length) { | ||
return cookies.map(function (cookie) { return cookie.split(';')[0]; }).join(';'); | ||
return cookies.map((cookie) => cookie.split(';')[0]).join(';'); | ||
} | ||
} | ||
//# sourceMappingURL=csrf-token-header.js.map |
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
@@ -32,38 +21,2 @@ if (k2 === undefined) k2 = k; | ||
}; | ||
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()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -74,9 +27,9 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
exports.shouldHandleCsrfToken = exports.getAxiosConfigWithDefaultsWithoutMethod = exports.getAxiosConfigWithDefaults = exports.executeHttpRequest = exports.buildAxiosRequestConfig = exports.execute = exports.addDestinationToRequestConfig = exports.buildHttpRequest = void 0; | ||
var http = __importStar(require("http")); | ||
var https = __importStar(require("https")); | ||
var util_1 = require("@sap-cloud-sdk/util"); | ||
var axios_1 = __importDefault(require("axios")); | ||
var connectivity_1 = require("@sap-cloud-sdk/connectivity"); | ||
var _1 = require("."); | ||
var logger = (0, util_1.createLogger)({ | ||
const http = __importStar(require("http")); | ||
const https = __importStar(require("https")); | ||
const util_1 = require("@sap-cloud-sdk/util"); | ||
const axios_1 = __importDefault(require("axios")); | ||
const connectivity_1 = require("@sap-cloud-sdk/connectivity"); | ||
const _1 = require("."); | ||
const logger = (0, util_1.createLogger)({ | ||
package: 'core', | ||
@@ -92,26 +45,14 @@ messageContext: 'http-client' | ||
*/ | ||
function buildHttpRequest(destination, customHeaders) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var resolvedDestination, headers; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
if (customHeaders) { | ||
logger.info("The following custom headers will overwrite headers created by the SDK:\n" + Object.keys(customHeaders) | ||
.map(function (key) { return " - \"" + key + "\""; }) | ||
.join('\n')); | ||
} | ||
return [4 /*yield*/, resolveDestination(destination)]; | ||
case 1: | ||
resolvedDestination = _a.sent(); | ||
if (!resolvedDestination) { | ||
throw Error("Failed to resolve the destination '" + (0, connectivity_1.toDestinationNameUrl)(destination) + "'."); | ||
} | ||
return [4 /*yield*/, buildHeaders(resolvedDestination, customHeaders)]; | ||
case 2: | ||
headers = _a.sent(); | ||
return [2 /*return*/, buildDestinationHttpRequestConfig(resolvedDestination, headers)]; | ||
} | ||
}); | ||
}); | ||
async function buildHttpRequest(destination, customHeaders) { | ||
if (customHeaders) { | ||
logger.info(`The following custom headers will overwrite headers created by the SDK:\n${Object.keys(customHeaders) | ||
.map(key => ` - "${key}"`) | ||
.join('\n')}`); | ||
} | ||
const resolvedDestination = await resolveDestination(destination); | ||
if (!resolvedDestination) { | ||
throw Error(`Failed to resolve the destination '${(0, connectivity_1.toDestinationNameUrl)(destination)}'.`); | ||
} | ||
const headers = await buildHeaders(resolvedDestination, customHeaders); | ||
return buildDestinationHttpRequestConfig(resolvedDestination, headers); | ||
} | ||
@@ -128,5 +69,3 @@ exports.buildHttpRequest = buildHttpRequest; | ||
function addDestinationToRequestConfig(destination, requestConfig) { | ||
return buildHttpRequest(destination).then(function (destinationConfig) { | ||
return merge(destinationConfig, requestConfig); | ||
}); | ||
return buildHttpRequest(destination).then(destinationConfig => merge(destinationConfig, requestConfig)); | ||
} | ||
@@ -144,20 +83,8 @@ exports.addDestinationToRequestConfig = addDestinationToRequestConfig; | ||
function execute(executeFn) { | ||
return function (destination, requestConfig, options) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var destinationRequestConfig, request, _a; | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: return [4 /*yield*/, buildHttpRequest(destination, requestConfig.headers)]; | ||
case 1: | ||
destinationRequestConfig = _b.sent(); | ||
request = merge(destinationRequestConfig, requestConfig); | ||
_a = request; | ||
return [4 /*yield*/, addCsrfTokenToHeader(destination, request, options)]; | ||
case 2: | ||
_a.headers = _b.sent(); | ||
logRequestInformation(request); | ||
return [2 /*return*/, executeFn(request)]; | ||
} | ||
}); | ||
}); | ||
return async function (destination, requestConfig, options) { | ||
const destinationRequestConfig = await buildHttpRequest(destination, requestConfig.headers); | ||
const request = merge(destinationRequestConfig, requestConfig); | ||
request.headers = await addCsrfTokenToHeader(destination, request, options); | ||
logRequestInformation(request); | ||
return executeFn(request); | ||
}; | ||
@@ -167,11 +94,11 @@ } | ||
function logRequestInformation(request) { | ||
var basicRequestInfo = "Execute '" + request.method + "' request with target: " + request.url + "."; | ||
var headerText = Object.keys(request.headers).reduce(function (previous, key) { | ||
const basicRequestInfo = `Execute '${request.method}' request with target: ${request.url}.`; | ||
const headerText = Object.keys(request.headers).reduce((previous, key) => { | ||
if (key.toLowerCase().includes('authentication') || | ||
key.toLowerCase().includes('authorization')) { | ||
return "" + previous + util_1.unixEOL + key + ":*******"; | ||
return `${previous}${util_1.unixEOL}${key}:*******`; | ||
} | ||
return "" + previous + util_1.unixEOL + key + ":" + request.headers[key]; | ||
return `${previous}${util_1.unixEOL}${key}:${request.headers[key]}`; | ||
}, 'The headers of the request are:'); | ||
logger.debug("" + basicRequestInfo + util_1.unixEOL + headerText); | ||
logger.debug(`${basicRequestInfo}${util_1.unixEOL}${headerText}`); | ||
} | ||
@@ -184,17 +111,8 @@ /** | ||
*/ | ||
function buildAxiosRequestConfig(destination, requestConfig) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var destinationRequestConfig, request; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, buildHttpRequest(destination, requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.headers)]; | ||
case 1: | ||
destinationRequestConfig = _a.sent(); | ||
request = requestConfig | ||
? merge(destinationRequestConfig, requestConfig) | ||
: destinationRequestConfig; | ||
return [2 /*return*/, __assign(__assign({}, getAxiosConfigWithDefaultsWithoutMethod()), request)]; | ||
} | ||
}); | ||
}); | ||
async function buildAxiosRequestConfig(destination, requestConfig) { | ||
const destinationRequestConfig = await buildHttpRequest(destination, requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.headers); | ||
const request = requestConfig | ||
? merge(destinationRequestConfig, requestConfig) | ||
: destinationRequestConfig; | ||
return { ...getAxiosConfigWithDefaultsWithoutMethod(), ...request }; | ||
} | ||
@@ -215,6 +133,11 @@ exports.buildAxiosRequestConfig = buildAxiosRequestConfig; | ||
function buildDestinationHttpRequestConfig(destination, headers) { | ||
return __assign({ baseURL: destination.url, headers: headers, params: destination.queryParameters }, (0, connectivity_1.getAgentConfig)(destination)); | ||
return { | ||
baseURL: destination.url, | ||
headers, | ||
params: destination.queryParameters, | ||
...(0, connectivity_1.getAgentConfig)(destination) | ||
}; | ||
} | ||
function buildHeaders(destination, customHeaders) { | ||
return (0, connectivity_1.buildHeadersForDestination)(destination, customHeaders).catch(function (error) { | ||
return (0, connectivity_1.buildHeadersForDestination)(destination, customHeaders).catch(error => { | ||
throw new util_1.ErrorWithCause('Failed to build headers.', error); | ||
@@ -224,3 +147,3 @@ }); | ||
function resolveDestination(destination) { | ||
return (0, connectivity_1.useOrFetchDestination)(destination).catch(function (error) { | ||
return (0, connectivity_1.useOrFetchDestination)(destination).catch(error => { | ||
throw new util_1.ErrorWithCause('Failed to load destination.', error); | ||
@@ -230,6 +153,13 @@ }); | ||
function merge(destinationRequestConfig, customRequestConfig) { | ||
return __assign(__assign(__assign({}, destinationRequestConfig), customRequestConfig), { headers: __assign(__assign({}, destinationRequestConfig.headers), customRequestConfig.headers) }); | ||
return { | ||
...destinationRequestConfig, | ||
...customRequestConfig, | ||
headers: { | ||
...destinationRequestConfig.headers, | ||
...customRequestConfig.headers | ||
} | ||
}; | ||
} | ||
function mergeRequestWithAxiosDefaults(request) { | ||
return __assign(__assign({}, getAxiosConfigWithDefaults()), request); | ||
return { ...getAxiosConfigWithDefaults(), ...request }; | ||
} | ||
@@ -244,3 +174,6 @@ function executeWithAxios(request) { | ||
function getAxiosConfigWithDefaults() { | ||
return __assign(__assign({}, getAxiosConfigWithDefaultsWithoutMethod()), { method: 'get' }); | ||
return { | ||
...getAxiosConfigWithDefaultsWithoutMethod(), | ||
method: 'get' | ||
}; | ||
} | ||
@@ -253,11 +186,5 @@ exports.getAxiosConfigWithDefaults = getAxiosConfigWithDefaults; | ||
httpsAgent: new https.Agent(), | ||
paramsSerializer: function (params) { | ||
if (params === void 0) { params = {}; } | ||
return Object.entries(params) | ||
.map(function (_a) { | ||
var key = _a[0], value = _a[1]; | ||
return key + "=" + value; | ||
}) | ||
.join('&'); | ||
} | ||
paramsSerializer: (params = {}) => Object.entries(params) | ||
.map(([key, value]) => `${key}=${value}`) | ||
.join('&') | ||
}; | ||
@@ -274,3 +201,7 @@ } | ||
return httpRequestOptions | ||
? __assign(__assign({}, getDefaultHttpRequestOptions()), httpRequestOptions) : getDefaultHttpRequestOptions(); | ||
? { | ||
...getDefaultHttpRequestOptions(), | ||
...httpRequestOptions | ||
} | ||
: getDefaultHttpRequestOptions(); | ||
} | ||
@@ -283,42 +214,22 @@ function shouldHandleCsrfToken(requestConfig, options) { | ||
exports.shouldHandleCsrfToken = shouldHandleCsrfToken; | ||
function getCsrfHeaders(destination, request) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var csrfHeaders; | ||
return __generator(this, function (_a) { | ||
csrfHeaders = (0, util_1.pickIgnoreCase)(request.headers, 'x-csrf-token'); | ||
return [2 /*return*/, Object.keys(csrfHeaders).length | ||
? csrfHeaders | ||
: (0, _1.buildCsrfHeaders)(destination, { | ||
params: request.params, | ||
headers: request.headers, | ||
url: request.url, | ||
proxy: request.proxy, | ||
httpAgent: request.httpAgent, | ||
httpsAgent: request.httpsAgent | ||
})]; | ||
async function getCsrfHeaders(destination, request) { | ||
const csrfHeaders = (0, util_1.pickIgnoreCase)(request.headers, 'x-csrf-token'); | ||
return Object.keys(csrfHeaders).length | ||
? csrfHeaders | ||
: (0, _1.buildCsrfHeaders)(destination, { | ||
params: request.params, | ||
headers: request.headers, | ||
url: request.url, | ||
proxy: request.proxy, | ||
httpAgent: request.httpAgent, | ||
httpsAgent: request.httpsAgent | ||
}); | ||
}); | ||
} | ||
function addCsrfTokenToHeader(destination, request, httpRequestOptions) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var options, csrfHeaders, _a; | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
options = buildHttpRequestOptions(httpRequestOptions); | ||
if (!shouldHandleCsrfToken(request, options)) return [3 /*break*/, 2]; | ||
return [4 /*yield*/, getCsrfHeaders(destination, request)]; | ||
case 1: | ||
_a = _b.sent(); | ||
return [3 /*break*/, 3]; | ||
case 2: | ||
_a = {}; | ||
_b.label = 3; | ||
case 3: | ||
csrfHeaders = _a; | ||
return [2 /*return*/, __assign(__assign({}, request.headers), csrfHeaders)]; | ||
} | ||
}); | ||
}); | ||
async function addCsrfTokenToHeader(destination, request, httpRequestOptions) { | ||
const options = buildHttpRequestOptions(httpRequestOptions); | ||
const csrfHeaders = shouldHandleCsrfToken(request, options) | ||
? await getCsrfHeaders(destination, request) | ||
: {}; | ||
return { ...request.headers, ...csrfHeaders }; | ||
} | ||
//# sourceMappingURL=http-client.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.filterCustomRequestConfig = void 0; | ||
var util_1 = require("@sap-cloud-sdk/util"); | ||
var logger = (0, util_1.createLogger)({ | ||
const util_1 = require("@sap-cloud-sdk/util"); | ||
const logger = (0, util_1.createLogger)({ | ||
package: 'core', | ||
@@ -15,9 +15,6 @@ messageContext: 'http-request-config' | ||
*/ | ||
function filterCustomRequestConfig(customRequestConfig, disallowedKeys) { | ||
if (disallowedKeys === void 0) { disallowedKeys = defaultDisallowedKeys; } | ||
var removedKeys = Object.keys(customRequestConfig).filter(function (key) { | ||
return disallowedKeys.includes(key); | ||
}); | ||
function filterCustomRequestConfig(customRequestConfig, disallowedKeys = defaultDisallowedKeys) { | ||
const removedKeys = Object.keys(customRequestConfig).filter(key => disallowedKeys.includes(key)); | ||
if (removedKeys.length) { | ||
logger.warn("The following keys are found in the custom request config that will be removed: " + removedKeys.join(', ')); | ||
logger.warn(`The following keys are found in the custom request config that will be removed: ${removedKeys.join(', ')}`); | ||
} | ||
@@ -30,3 +27,3 @@ return (0, util_1.exclude)(disallowedKeys, customRequestConfig); | ||
*/ | ||
var defaultDisallowedKeys = [ | ||
const defaultDisallowedKeys = [ | ||
'method', | ||
@@ -33,0 +30,0 @@ 'url', |
{ | ||
"name": "@sap-cloud-sdk/http-client", | ||
"version": "2.0.0-20211112070725.0+7b76e3c9", | ||
"version": "2.0.0-20211112072110.0+10a99f59", | ||
"description": "SAP Cloud SDK for JavaScript http-client", | ||
@@ -35,14 +35,14 @@ "homepage": "https://sap.github.io/cloud-sdk/docs/js/overview-cloud-sdk-for-javascript", | ||
"dependencies": { | ||
"@sap-cloud-sdk/analytics": "^2.0.0-20211112070725.0+7b76e3c9", | ||
"@sap-cloud-sdk/connectivity": "^2.0.0-20211112070725.0+7b76e3c9", | ||
"@sap-cloud-sdk/util": "^2.0.0-20211112070725.0+7b76e3c9", | ||
"@sap-cloud-sdk/analytics": "^2.0.0-20211112072110.0+10a99f59", | ||
"@sap-cloud-sdk/connectivity": "^2.0.0-20211112072110.0+10a99f59", | ||
"@sap-cloud-sdk/util": "^2.0.0-20211112072110.0+10a99f59", | ||
"axios": "^0.24.0" | ||
}, | ||
"devDependencies": { | ||
"@sap-cloud-sdk/odata-common": "^2.0.0-20211112070725.0+7b76e3c9", | ||
"@sap-cloud-sdk/odata-v2": "^2.0.0-20211112070725.0+7b76e3c9", | ||
"@sap-cloud-sdk/odata-common": "^2.0.0-20211112072110.0+10a99f59", | ||
"@sap-cloud-sdk/odata-v2": "^2.0.0-20211112072110.0+10a99f59", | ||
"@sap-cloud-sdk/test-services": "^1.50.0", | ||
"nock": "^13.0.11" | ||
}, | ||
"gitHead": "7b76e3c951b4ece3a85e088dc50f922d966ce6e9" | ||
"gitHead": "10a99f595b85c6cf237b0b53635d6821576302d7" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
55721
522