1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-25 05:23:13 +03:00

Support for MSC2140 (terms of service for IS/IM)

This commit is contained in:
David Baker
2019-07-09 18:50:01 +01:00
parent 60e339bac0
commit e9528ebb98
4 changed files with 59 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd Copyright 2017 Vector Creations Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@@ -16,6 +17,8 @@ limitations under the License.
*/ */
"use strict"; "use strict";
import { SERVICETYPES } from './servicetypes';
/** /**
* This is an internal module. MatrixBaseApis is currently only meant to be used * This is an internal module. MatrixBaseApis is currently only meant to be used
* by {@link client~MatrixClient}. * by {@link client~MatrixClient}.
@@ -26,6 +29,17 @@ limitations under the License.
const httpApi = require("./http-api"); const httpApi = require("./http-api");
const utils = require("./utils"); const utils = require("./utils");
function termsUrlForService(serviceType, baseUrl) {
switch (serviceType) {
case SERVICETYPES.IS:
return baseUrl + httpApi.PREFIX_IDENTITY_V2
case SERVICETYPES.IM:
return baseUrl + '/terms/'
default:
throw new Error('Unsupported service type');
}
}
/** /**
* Low-level wrappers for the Matrix APIs * Low-level wrappers for the Matrix APIs
* *
@@ -1888,6 +1902,23 @@ MatrixBaseApis.prototype.getThirdpartyUser = function(protocol, params) {
); );
}; };
MatrixBaseApis.prototype.getTerms = function(serviceType, baseUrl, accessToken) {
const url = termsUrlForService(serviceType, baseUrl);
return this._http.requestOtherUrl(
undefined, 'GET', url, null, null, null,
);
};
MatrixBaseApis.prototype.agreeToTerms = function(serviceType, baseUrl, accessToken, termsUrls) {
const url = termsUrlForService(serviceType, baseUrl);
const headers = {
Authorization: "Bearer " + accessToken,
};
return this._http.requestOtherUrl(
undefined, 'POST', url, null, {user_accepts: termsUrls}, { headers },
);
};
/** /**
* MatrixBaseApis object * MatrixBaseApis object
*/ */

View File

@@ -1,5 +1,6 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@@ -50,6 +51,11 @@ module.exports.PREFIX_UNSTABLE = "/_matrix/client/unstable";
*/ */
module.exports.PREFIX_IDENTITY_V1 = "/_matrix/identity/api/v1"; module.exports.PREFIX_IDENTITY_V1 = "/_matrix/identity/api/v1";
/**
* URI path for the v2 identity API
*/
module.exports.PREFIX_IDENTITY_V2 = "/_matrix/identity/v2";
/** /**
* URI path for the media repo API * URI path for the media repo API
*/ */

View File

@@ -1,6 +1,7 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd Copyright 2017 Vector Creations Ltd
Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@@ -76,6 +77,7 @@ module.exports.InteractiveAuth = require("./interactive-auth");
/** The {@link module:auto-discovery|AutoDiscovery} class. */ /** The {@link module:auto-discovery|AutoDiscovery} class. */
module.exports.AutoDiscovery = require("./autodiscovery").AutoDiscovery; module.exports.AutoDiscovery = require("./autodiscovery").AutoDiscovery;
module.exports.SERVICETYPES = require('./servicetypes').SERVICETYPES;
module.exports.MemoryCryptoStore = module.exports.MemoryCryptoStore =
require("./crypto/store/memory-crypto-store").default; require("./crypto/store/memory-crypto-store").default;

20
src/servicetypes.js Normal file
View File

@@ -0,0 +1,20 @@
/*
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.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
export const SERVICETYPES = Object.freeze({
IS: 'SERVICETYPE_IS',
IM: 'SERVICETYPE_IM',
});