From 7d7878245bb93789ece48806cbc43f2edb9480e5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 22 Jul 2019 18:54:04 +0100 Subject: [PATCH] Strip path component from IM rest url before passing to js-sdk. We continue to use the full URL for the calls done by matrix-react-sdk, but the standard terms API called by the js-sdk lives on the standard _matrix path. This means we don't support running IMs on a non-root path, but it's the only realistic way of transitioning to _matrix paths since configs in the wild contain bits of the API path. Once we've fully transitioned to _matrix URLs, we can give people a grace period to update their configs, then use the rest url as a regular base url. --- src/ScalarAuthClient.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ScalarAuthClient.js b/src/ScalarAuthClient.js index 4aafd447b1..54445260d1 100644 --- a/src/ScalarAuthClient.js +++ b/src/ScalarAuthClient.js @@ -15,6 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import url from 'url'; import Promise from 'bluebird'; import SettingsStore from "./settings/SettingsStore"; import { Service, presentTermsForServices, TermsNotSignedError } from './Terms'; @@ -104,9 +105,15 @@ class ScalarAuthClient { }).catch((e) => { if (e instanceof TermsNotSignedError) { console.log("Integrations manager requires new terms to be agreed to"); + // The terms endpoints are new and so live on standard _matrix prefixes, + // but IM rest urls are currently configured with paths, so remove the + // path from the base URL before passing it to the js-sdk + const parsedImRestUrl = url.parse(SdkConfig.get().integrations_rest_url); + parsedImRestUrl.path = ''; + parsedImRestUrl.pathname = ''; return presentTermsForServices([new Service( Matrix.SERVICE_TYPES.IM, - SdkConfig.get().integrations_rest_url, + parsedImRestUrl.format(), token, )]).then(() => { return token;