mirror of
https://github.com/gradle/gradle-build-action.git
synced 2024-10-19 12:11:11 +08:00
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
|
"use strict";
|
||
|
// Copyright (c) Microsoft. All rights reserved.
|
||
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const url = require("url");
|
||
|
const path = require("path");
|
||
|
/**
|
||
|
* creates an url from a request url and optional base url (http://server:8080)
|
||
|
* @param {string} resource - a fully qualified url or relative path
|
||
|
* @param {string} baseUrl - an optional baseUrl (http://server:8080)
|
||
|
* @return {string} - resultant url
|
||
|
*/
|
||
|
function getUrl(resource, baseUrl) {
|
||
|
const pathApi = path.posix || path;
|
||
|
if (!baseUrl) {
|
||
|
return resource;
|
||
|
}
|
||
|
else if (!resource) {
|
||
|
return baseUrl;
|
||
|
}
|
||
|
else {
|
||
|
const base = url.parse(baseUrl);
|
||
|
const resultantUrl = url.parse(resource);
|
||
|
// resource (specific per request) elements take priority
|
||
|
resultantUrl.protocol = resultantUrl.protocol || base.protocol;
|
||
|
resultantUrl.auth = resultantUrl.auth || base.auth;
|
||
|
resultantUrl.host = resultantUrl.host || base.host;
|
||
|
resultantUrl.pathname = pathApi.resolve(base.pathname, resultantUrl.pathname);
|
||
|
if (!resultantUrl.pathname.endsWith('/') && resource.endsWith('/')) {
|
||
|
resultantUrl.pathname += '/';
|
||
|
}
|
||
|
return url.format(resultantUrl);
|
||
|
}
|
||
|
}
|
||
|
exports.getUrl = getUrl;
|