From ab6aad31f6977cf90bfbdd4242c54de8a0f8326e Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Thu, 22 Dec 2022 08:07:10 -0500 Subject: [PATCH 1/4] Add versions endpoint. --- changelog.d/542.feature | 1 + sydent/http/httpserver.py | 2 ++ sydent/http/servlets/versions.py | 36 ++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 changelog.d/542.feature create mode 100644 sydent/http/servlets/versions.py diff --git a/changelog.d/542.feature b/changelog.d/542.feature new file mode 100644 index 00000000..163414e7 --- /dev/null +++ b/changelog.d/542.feature @@ -0,0 +1 @@ +Support Matrix v1.1. diff --git a/sydent/http/httpserver.py b/sydent/http/httpserver.py index 714cedf0..65e59170 100644 --- a/sydent/http/httpserver.py +++ b/sydent/http/httpserver.py @@ -56,6 +56,7 @@ from sydent.http.servlets.termsservlet import TermsServlet from sydent.http.servlets.threepidbindservlet import ThreePidBindServlet from sydent.http.servlets.threepidunbindservlet import ThreePidUnbindServlet +from sydent.http.servlets.versions import VersionsServlet if TYPE_CHECKING: from sydent.sydent import Sydent @@ -97,6 +98,7 @@ def __init__(self, sydent: "Sydent", lookup_pepper: str) -> None: matrix.putChild(b"identity", identity) identity.putChild(b"api", api) identity.putChild(b"v2", v2) + identity.putChild(b"versions", VersionsServlet()) api.putChild(b"v1", v1) validate.putChild(b"email", email) diff --git a/sydent/http/servlets/versions.py b/sydent/http/servlets/versions.py new file mode 100644 index 00000000..2fde07cd --- /dev/null +++ b/sydent/http/servlets/versions.py @@ -0,0 +1,36 @@ +# Copyright 2022 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. + +from twisted.web.server import Request + +from sydent.http.servlets import SydentResource, jsonwrap, send_cors +from sydent.types import JsonDict + + +class VersionsServlet(SydentResource): + isLeaf = True + + @jsonwrap + def render_GET(self, request: Request) -> JsonDict: + """ + Get the terms that must be agreed to in order to use this service + Returns: Object describing the terms that require agreement + """ + send_cors(request) + + return {"versions": ["r0.1.0", "r0.2.0", "r0.2.1", "r0.3.0", "v1.1"]} + + def render_OPTIONS(self, request: Request) -> bytes: + send_cors(request) + return b"" From 31f2b4cee542412508bcc51f7aa9c6d7cd4b25e6 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 28 Dec 2022 07:24:23 -0500 Subject: [PATCH 2/4] Add more versions. --- sydent/http/servlets/versions.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sydent/http/servlets/versions.py b/sydent/http/servlets/versions.py index 2fde07cd..72429041 100644 --- a/sydent/http/servlets/versions.py +++ b/sydent/http/servlets/versions.py @@ -29,7 +29,19 @@ def render_GET(self, request: Request) -> JsonDict: """ send_cors(request) - return {"versions": ["r0.1.0", "r0.2.0", "r0.2.1", "r0.3.0", "v1.1"]} + return { + "versions": [ + "r0.1.0", + "r0.2.0", + "r0.2.1", + "r0.3.0", + "v1.1", + "v1.2", + "v1.3", + "v1.4", + "v1.5", + ] + } def render_OPTIONS(self, request: Request) -> bytes: send_cors(request) From 5c254b8367f5c24f58cdcd9fe442bcf46df89052 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 28 Dec 2022 09:14:26 -0500 Subject: [PATCH 3/4] Update docstring. --- sydent/http/servlets/versions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sydent/http/servlets/versions.py b/sydent/http/servlets/versions.py index 72429041..029d9189 100644 --- a/sydent/http/servlets/versions.py +++ b/sydent/http/servlets/versions.py @@ -24,7 +24,7 @@ class VersionsServlet(SydentResource): @jsonwrap def render_GET(self, request: Request) -> JsonDict: """ - Get the terms that must be agreed to in order to use this service + Return the supported Matrix versions. Returns: Object describing the terms that require agreement """ send_cors(request) From a32f4320907543cbca43112338a341902c2cb663 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Wed, 28 Dec 2022 09:16:57 -0500 Subject: [PATCH 4/4] Update docstring. --- sydent/http/servlets/versions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sydent/http/servlets/versions.py b/sydent/http/servlets/versions.py index 029d9189..52fdc2fb 100644 --- a/sydent/http/servlets/versions.py +++ b/sydent/http/servlets/versions.py @@ -25,7 +25,6 @@ class VersionsServlet(SydentResource): def render_GET(self, request: Request) -> JsonDict: """ Return the supported Matrix versions. - Returns: Object describing the terms that require agreement """ send_cors(request)