summary refs log tree commit diff
path: root/synapse/rest/client/v2_alpha/account.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/rest/client/v2_alpha/account.py')
-rw-r--r--synapse/rest/client/v2_alpha/account.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/synapse/rest/client/v2_alpha/account.py b/synapse/rest/client/v2_alpha/account.py

index 7e5884df0c..752ea265bd 100644 --- a/synapse/rest/client/v2_alpha/account.py +++ b/synapse/rest/client/v2_alpha/account.py
@@ -480,6 +480,38 @@ class ThreepidDeleteRestServlet(RestServlet): ) +class ThreepidLookupRestServlet(RestServlet): + PATTERNS = client_v2_patterns("/account/3pid/lookup$") + + def __init__(self, hs): + super(ThreepidLookupRestServlet, self).__init__() + self.config = hs.config + self.auth = hs.get_auth() + self.identity_handler = IdentityHandler(hs) + + @defer.inlineCallbacks + def on_GET(self, request): + """Proxy a /_matrix/identity/api/v1/lookup request to an identity + server + """ + yield self.auth.get_user_by_req(request) + + # Extract query parameters + query_params = request.args + assert_params_in_dict(query_params, [b"medium", b"address", b"id_server"]) + + # Retrieve address and medium from the request parameters + medium = parse_string(request, "medium") + address = parse_string(request, "address") + id_server = parse_string(request, "id_server") + + # Proxy the request to the identity server. lookup_3pid handles checking + # if the lookup is allowed so we don't need to do it here. + ret = yield self.identity_handler.lookup_3pid(id_server, medium, address) + + respond_with_json(200, ret) + + class WhoamiRestServlet(RestServlet): PATTERNS = client_v2_patterns("/account/whoami$")