mirror of https://github.com/jkjoy/sunpeiwen.git
53 lines
1.9 KiB
JavaScript
53 lines
1.9 KiB
JavaScript
"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;
|