diff --git a/src/base-apis.js b/src/base-apis.js index 3e40ee988..68fc137a7 100644 --- a/src/base-apis.js +++ b/src/base-apis.js @@ -117,6 +117,15 @@ MatrixBaseApis.prototype.getIdentityServerUrl = function(stripProto=false) { return this.idBaseUrl; }; +/** + * Set the Identity Server URL of this client + * @param {string} url New Identity Server URL + */ +MatrixBaseApis.prototype.setIdentityServerUrl = function(url) { + this.idBaseUrl = utils.ensureNoTrailingSlash(url); + this._http.setIdBaseUrl(this._idBaseUrl); +}; + /** * Get the access token associated with this account. * @return {?String} The access_token or null diff --git a/src/client.js b/src/client.js index e1367dffa..08cee844b 100644 --- a/src/client.js +++ b/src/client.js @@ -161,15 +161,8 @@ function keyFromRecoverySession(session, decryptionKey) { * implements the {$link module:crypto/verification/Base verifier interface}. */ function MatrixClient(opts) { - // Allow trailing slash in HS url - if (opts.baseUrl && opts.baseUrl.endsWith("/")) { - opts.baseUrl = opts.baseUrl.substr(0, opts.baseUrl.length - 1); - } - - // Allow trailing slash in IS url - if (opts.idBaseUrl && opts.idBaseUrl.endsWith("/")) { - opts.idBaseUrl = opts.idBaseUrl.substr(0, opts.idBaseUrl.length - 1); - } + opts.baseUrl = utils.ensureNoTrailingSlash(opts.baseUrl); + opts.idBaseUrl = utils.ensureNoTrailingSlash(opts.idBaseUrl); MatrixBaseApis.call(this, opts); diff --git a/src/http-api.js b/src/http-api.js index 1f30c23a8..7853ea18f 100644 --- a/src/http-api.js +++ b/src/http-api.js @@ -96,6 +96,13 @@ module.exports.MatrixHttpApi = function MatrixHttpApi(event_emitter, opts) { }; module.exports.MatrixHttpApi.prototype = { + /** + * Sets the baase URL for the identity server + * @param {string} url The new base url + */ + setIdBaseUrl: function(url) { + this.opts.idBaseUrl = url; + }, /** * Get the content repository url with query parameters. diff --git a/src/utils.js b/src/utils.js index d05697f19..b752299f0 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +Copyright 2019 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -699,3 +700,11 @@ module.exports.globToRegexp = function(glob, extended) { } return pat; }; + +module.exports.ensureNoTrailingSlash = function(url) { + if (url && url.endsWith("/")) { + return url.substr(0, url.length - 1); + } else { + return url; + } +};