UNPKG

sp-rest-proxy

Version:

SharePoint REST API Proxy for Node.js and Express local serve

54 lines 2.47 kB
"use strict"; 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