UNPKG

@atlaskit/util-service-support

Version:

A library of support classes for integrating React components with REST HTTP services

65 lines 2.18 kB
export var defaultRequestServiceOptions = {}; export var 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; } } } } }; export var buildHeaders = function buildHeaders(secOptions, extraHeaders) { var headers = {}; addToHeaders(headers, extraHeaders); if (secOptions) { addToHeaders(headers, secOptions.headers); } return headers; };