@atlaskit/util-service-support
Version:
A library of support classes for integrating React components with REST HTTP services
71 lines (70 loc) • 2.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defaultRequestServiceOptions = exports.buildUrl = exports.buildHeaders = void 0;
var defaultRequestServiceOptions = exports.defaultRequestServiceOptions = {};
var buildUrl = exports.buildUrl = function buildUrl(baseUrl) {
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
var queryParams = arguments.length > 2 ? arguments[2] : undefined;
var secOptions = arguments.length > 3 ? arguments[3] : undefined;
var searchParam = new URLSearchParams(
// For relative urls, the URL class requires base to be set. It's ignored if a url is not relative.
// Since we only care about search params it is fine to have any base url here.
new URL(baseUrl, 'https://BASE_FALLBACK').search || undefined);
baseUrl = baseUrl.split('?')[0];
if (queryParams) {
for (var key in queryParams) {
if ({}.hasOwnProperty.call(queryParams, key)) {
searchParam.append(key, queryParams[key]);
}
}
}
if (secOptions && secOptions.params) {
for (var _key in secOptions.params) {
if ({}.hasOwnProperty.call(secOptions.params, _key)) {
var values = secOptions.params[_key];
if (Array.isArray(values)) {
for (var i = 0; i < values.length; i++) {
searchParam.append(_key, values[i]);
}
} else {
searchParam.append(_key, values);
}
}
}
}
var separator = '';
if (path && baseUrl.substr(-1) !== '/' && !path.startsWith('/')) {
separator = '/';
}
var params = searchParam.toString();
if (params) {
params = '?' + params;
}
return "".concat(baseUrl).concat(separator).concat(path).concat(params);
};
var addToHeaders = function addToHeaders(headers, keyValues) {
if (keyValues) {
for (var key in keyValues) {
if ({}.hasOwnProperty.call(keyValues, key)) {
var values = keyValues[key];
if (Array.isArray(values)) {
for (var i = 0; i < values.length; i++) {
headers[key] = values[i];
}
} else {
headers[key] = values;
}
}
}
}
};
var buildHeaders = exports.buildHeaders = function buildHeaders(secOptions, extraHeaders) {
var headers = {};
addToHeaders(headers, extraHeaders);
if (secOptions) {
addToHeaders(headers, secOptions.headers);
}
return headers;
};