"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getReqUrl = void 0; const copy_to_1 = __importDefault(require("copy-to")); const url_1 = __importDefault(require("url")); const merge_descriptors_1 = __importDefault(require("merge-descriptors")); const is_type_of_1 = __importDefault(require("is-type-of")); const isIP_1 = require("../utils/isIP"); const checkConfigValid_1 = require("../utils/checkConfigValid"); function getReqUrl(params) { const ep = {}; const isCname = this.options.cname; checkConfigValid_1.checkConfigValid(this.options.endpoint, 'endpoint'); copy_to_1.default(this.options.endpoint, false).to(ep); if (params.bucket && !isCname && !isIP_1.isIP(ep.hostname) && !this.options.sldEnable) { ep.host = `${params.bucket}.${ep.host}`; } let resourcePath = '/'; if (params.bucket && this.options.sldEnable) { resourcePath += `${params.bucket}/`; } if (params.object) { // Preserve '/' in result url resourcePath += this._escape(params.object).replace(/\+/g, '%2B'); } ep.pathname = resourcePath; const query = {}; if (params.query) { merge_descriptors_1.default(query, params.query); } if (params.subres) { let subresAsQuery = {}; if (is_type_of_1.default.string(params.subres)) { subresAsQuery[params.subres] = ''; } else if (is_type_of_1.default.array(params.subres)) { params.subres.forEach(k => { subresAsQuery[k] = ''; }); } else { subresAsQuery = params.subres; } merge_descriptors_1.default(query, subresAsQuery); } ep.query = query; return url_1.default.format(ep); } exports.getReqUrl = getReqUrl;