summary refs log tree commit diff
path: root/synapse/appservice
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2016-08-25 15:10:06 +0100
committerPaul "LeoNerd" Evans <paul@matrix.org>2016-08-25 15:29:36 +0100
commit5474824975b5372665b0921960a0c3887a49efdb (patch)
treeb03ed94de9b1d5037e202caf41c813aea93cceff /synapse/appservice
parentMove static knowledge of protocol metadata into AS handler; cache the result (diff)
downloadsynapse-5474824975b5372665b0921960a0c3887a49efdb.tar.xz
Actually query over AS API for 3PE lookup metadata
Diffstat (limited to '')
-rw-r--r--synapse/appservice/api.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/synapse/appservice/api.py b/synapse/appservice/api.py
index 07ec33b9a1..1de0e7240f 100644
--- a/synapse/appservice/api.py
+++ b/synapse/appservice/api.py
@@ -52,6 +52,13 @@ class ApplicationServiceApi(SimpleHttpClient):
     pushing.
     """
 
+    PROTOCOL_META = {
+        # TODO(paul): Declare kinds of metadata in here
+        "gitter": {
+            "user_fields": ["username"],
+        }
+    }
+
     def __init__(self, hs):
         super(ApplicationServiceApi, self).__init__(hs)
         self.clock = hs.get_clock()
@@ -132,6 +139,19 @@ class ApplicationServiceApi(SimpleHttpClient):
             defer.returnValue([])
 
     @defer.inlineCallbacks
+    def get_3pe_protocol(self, service, protocol):
+        # TODO: cache
+        uri = "%s/thirdparty/protocol/%s" % (service.url, urllib.quote(protocol))
+        try:
+            response = yield self.get_json(uri, {})
+            defer.returnValue(response)
+        except Exception as ex:
+            logger.warning("query_3pe_protocol to %s threw exception %s",
+                uri, ex
+            )
+            defer.returnValue({})
+
+    @defer.inlineCallbacks
     def push_bulk(self, service, events, txn_id=None):
         events = self._serialize(events)