summary refs log tree commit diff
path: root/synapse/handlers/appservice.py
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-02-03 13:17:28 +0000
committerKegan Dougal <kegan@matrix.org>2015-02-03 13:17:28 +0000
commita060b47b13037da56ed8db2978a297133c23fc7f (patch)
treeadb092fc201ade3db67b8400e574816a49405a5a /synapse/handlers/appservice.py
parentEveryone loves SQL typos (diff)
downloadsynapse-a060b47b13037da56ed8db2978a297133c23fc7f.tar.xz
Add namespace constants. Add restrict_to option to limit namespace checks.
Diffstat (limited to 'synapse/handlers/appservice.py')
-rw-r--r--synapse/handlers/appservice.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py
index 9b8dd1bb49..bf68b33398 100644
--- a/synapse/handlers/appservice.py
+++ b/synapse/handlers/appservice.py
@@ -52,11 +52,12 @@ class ApplicationServicesHandler(BaseHandler):
         logger.info("Unregister as_token=%s", token)
         yield self.store.unregister_app_service(token)
 
-    def get_services_for_event(self, event):
+    def get_services_for_event(self, event, restrict_to=""):
         """Retrieve a list of application services interested in this event.
 
         Args:
             event(Event): The event to check.
+            restrict_to(str): The namespace to restrict regex tests to.
         Returns:
             list<ApplicationService>: A list of services interested in this
             event based on the service regex.
@@ -66,7 +67,7 @@ class ApplicationServicesHandler(BaseHandler):
 
         interested_list = [
             s for s in self.store.get_app_services() if (
-                s.is_interested(event, alias_list)
+                s.is_interested(event, restrict_to, alias_list)
             )
         ]
         return interested_list
@@ -80,11 +81,15 @@ class ApplicationServicesHandler(BaseHandler):
         Args:
             event(Event): The event to push out to interested services.
         """
-        # TODO: Gather interested services
-        #         get_services_for_event(event) <-- room IDs and user IDs
-        #         Get a list of room aliases. Check regex.
-        # TODO: If unknown user: poke User Query API.
-        # TODO: If unknown room alias: poke Room Alias Query API.
-
-        # TODO: Fork off pushes to these services - XXX First cut, best effort
-        pass
+        # Gather interested services
+        services = self.get_services_for_event(event)
+        if len(services) == 0:
+            return  # no services need notifying
+
+        # Do we know this user exists? If not, poke the user query API for
+        # all services which match that user regex.
+
+        # Do we know this room alias exists? If not, poke the room alias query
+        # API for all services which match that room alias regex.
+
+        # Fork off pushes to these services - XXX First cut, best effort