summary refs log tree commit diff
path: root/synapse/handlers/login.py
diff options
context:
space:
mode:
authorMark Haines <mjark@negativecurvature.net>2015-02-13 15:06:14 +0000
committerMark Haines <mjark@negativecurvature.net>2015-02-13 15:06:14 +0000
commit0d872f5aa6a81a31a83205210414c6e6f362e226 (patch)
tree2d7c2eeab3df724753d2b2ee358551a780048e25 /synapse/handlers/login.py
parentMerge pull request #72 from matrix-org/in_memory_sqlite_for_testing (diff)
parentFix tests which broke when event caching was introduced. (diff)
downloadsynapse-0d872f5aa6a81a31a83205210414c6e6f362e226.tar.xz
Merge pull request #50 from matrix-org/application-services
Application Services
Diffstat (limited to 'synapse/handlers/login.py')
-rw-r--r--synapse/handlers/login.py33
1 files changed, 19 insertions, 14 deletions
diff --git a/synapse/handlers/login.py b/synapse/handlers/login.py
index d297d71c03..7447800460 100644
--- a/synapse/handlers/login.py
+++ b/synapse/handlers/login.py
@@ -16,12 +16,13 @@
 from twisted.internet import defer
 
 from ._base import BaseHandler
-from synapse.api.errors import LoginError, Codes
+from synapse.api.errors import LoginError, Codes, CodeMessageException
 from synapse.http.client import SimpleHttpClient
 from synapse.util.emailutils import EmailException
 import synapse.util.emailutils as emailutils
 
 import bcrypt
+import json
 import logging
 
 logger = logging.getLogger(__name__)
@@ -96,16 +97,20 @@ class LoginHandler(BaseHandler):
 
     @defer.inlineCallbacks
     def _query_email(self, email):
-        httpCli = SimpleHttpClient(self.hs)
-        data = yield httpCli.get_json(
-            # TODO FIXME This should be configurable.
-            # XXX: ID servers need to use HTTPS
-            "http://%s%s" % (
-                "matrix.org:8090", "/_matrix/identity/api/v1/lookup"
-            ),
-            {
-                'medium': 'email',
-                'address': email
-            }
-        )
-        defer.returnValue(data)
+        http_client = SimpleHttpClient(self.hs)
+        try:
+            data = yield http_client.get_json(
+                # TODO FIXME This should be configurable.
+                # XXX: ID servers need to use HTTPS
+                "http://%s%s" % (
+                    "matrix.org:8090", "/_matrix/identity/api/v1/lookup"
+                ),
+                {
+                    'medium': 'email',
+                    'address': email
+                }
+            )
+            defer.returnValue(data)
+        except CodeMessageException as e:
+            data = json.loads(e.msg)
+            defer.returnValue(data)