sp-rest-proxy
Version:
SharePoint REST API Proxy for Node.js and Express local serve
54 lines • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UrlUtils = void 0;
var url_1 = require("url");
var UrlUtils = (function () {
function UrlUtils(ctx, settings) {
var _this = this;
this.ctx = ctx;
this.settings = settings;
this.isOnPrem = function (url) {
return url.indexOf('.sharepoint.com') === -1 && url.indexOf('.sharepoint.cn') === -1;
};
this.isHttps = function (url) {
return url.split('://')[0].toLowerCase() === 'https';
};
this.isAbsolute = function (url) {
return url.indexOf('http:') === 0 || url.indexOf('https:') === 0;
};
this.apiEndpoint = function (req) {
var reqUrl = typeof req === 'string' ? req : req.originalUrl;
var strictRelativeUrls = _this.settings.strictRelativeUrls;
if (typeof req === 'object' && req.header('X-ProxyStrict')) {
strictRelativeUrls = req.header('X-ProxyStrict').toLowerCase() === 'true' ? true : false;
}
var siteUrlParsed = (0, url_1.parse)(_this.ctx.siteUrl);
var baseUrlArr = siteUrlParsed.pathname.split('/');
var reqUrlArr = reqUrl.split('?')[0].split('/');
var len = baseUrlArr.length > reqUrlArr.length ? reqUrlArr.length : baseUrlArr.length;
var similarity = 0;
var reqPathName = reqUrl;
if (!strictRelativeUrls) {
for (var i = 0; i < len; i += 1) {
similarity += baseUrlArr[i] === reqUrlArr[i] ? 1 : 0;
}
if (similarity < 2) {
reqPathName = ("".concat(siteUrlParsed.pathname, "/").concat(reqUrl)).replace(/\/\//g, '/');
}
reqPathName = reqPathName.replace(/\/\//g, '/');
}
return "".concat(siteUrlParsed.protocol, "//").concat(siteUrlParsed.host).concat(reqPathName);
};
this.proxyEndpoint = function (reqUrl) {
var spHostUrl = _this.ctx.siteUrl.split('/').splice(0, 3).join('/');
var proxyUrl = reqUrl;
if (proxyUrl.toLowerCase().indexOf(spHostUrl.toLowerCase()) === 0) {
proxyUrl = proxyUrl.replace(new RegExp(spHostUrl, 'i'), _this.ctx.proxyHostUrl);
}
return proxyUrl;
};
}
return UrlUtils;
}());
exports.UrlUtils = UrlUtils;
//# sourceMappingURL=url.js.map