'use strict'; var querystringBuilder = require('@smithy/querystring-builder'); function formatUrl(request) { const { port, query } = request; let { protocol, path, hostname } = request; if (protocol && protocol.slice(-1) !== ":") { protocol += ":"; } if (port) { hostname += `:${port}`; } if (path && path.charAt(0) !== "/") { path = `/${path}`; } let queryString = query ? querystringBuilder.buildQueryString(query) : ""; if (queryString && queryString[0] !== "?") { queryString = `?${queryString}`; } let auth = ""; if (request.username != null || request.password != null) { const username = request.username ?? ""; const password = request.password ?? ""; auth = `${username}:${password}@`; } let fragment = ""; if (request.fragment) { fragment = `#${request.fragment}`; } return `${protocol}//${auth}${hostname}${path}${queryString}${fragment}`; } exports.formatUrl = formatUrl;