summary refs log tree commit diff
path: root/synapse/federation
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/federation')
-rw-r--r--synapse/federation/transport/client.py20
-rw-r--r--synapse/federation/transport/server.py22
2 files changed, 31 insertions, 11 deletions
diff --git a/synapse/federation/transport/client.py b/synapse/federation/transport/client.py
index 125d8f3598..d25ae1b282 100644
--- a/synapse/federation/transport/client.py
+++ b/synapse/federation/transport/client.py
@@ -486,6 +486,26 @@ class TransportLayerClient(object):
         )
 
     @log_function
+    def update_group_profile(self, destination, group_id, requester_user_id, content):
+        """Update a remote group profile
+
+        Args:
+            destination (str)
+            group_id (str)
+            requester_user_id (str)
+            content (dict): The new profile of the group
+        """
+        path = PREFIX + "/groups/%s/profile" % (group_id,)
+
+        return self.client.post_json(
+            destination=destination,
+            path=path,
+            args={"requester_user_id": requester_user_id},
+            data=content,
+            ignore_backoff=True,
+        )
+
+    @log_function
     def get_group_summary(self, destination, group_id, requester_user_id):
         """Get a group summary
         """
diff --git a/synapse/federation/transport/server.py b/synapse/federation/transport/server.py
index 1e68a898d5..8f3c14c303 100644
--- a/synapse/federation/transport/server.py
+++ b/synapse/federation/transport/server.py
@@ -610,7 +610,7 @@ class FederationVersionServlet(BaseFederationServlet):
 
 
 class FederationGroupsProfileServlet(BaseFederationServlet):
-    """Get the basic profile of a group on behalf of a user
+    """Get/set the basic profile of a group on behalf of a user
     """
     PATH = "/groups/(?P<group_id>[^/]*)/profile$"
 
@@ -626,30 +626,30 @@ class FederationGroupsProfileServlet(BaseFederationServlet):
 
         defer.returnValue((200, new_content))
 
-
-class FederationGroupsSummaryServlet(BaseFederationServlet):
-    PATH = "/groups/(?P<group_id>[^/]*)/summary$"
-
     @defer.inlineCallbacks
-    def on_GET(self, origin, content, query, group_id):
+    def on_POST(self, origin, content, query, group_id):
         requester_user_id = parse_string_from_args(query, "requester_user_id")
         if get_domain_from_id(requester_user_id) != origin:
             raise SynapseError(403, "requester_user_id doesn't match origin")
 
-        new_content = yield self.handler.get_group_summary(
-            group_id, requester_user_id
+        new_content = yield self.handler.update_group_profile(
+            group_id, requester_user_id, content
         )
 
         defer.returnValue((200, new_content))
 
+
+class FederationGroupsSummaryServlet(BaseFederationServlet):
+    PATH = "/groups/(?P<group_id>[^/]*)/summary$"
+
     @defer.inlineCallbacks
-    def on_POST(self, origin, content, query, group_id):
+    def on_GET(self, origin, content, query, group_id):
         requester_user_id = parse_string_from_args(query, "requester_user_id")
         if get_domain_from_id(requester_user_id) != origin:
             raise SynapseError(403, "requester_user_id doesn't match origin")
 
-        new_content = yield self.handler.update_group_profile(
-            group_id, requester_user_id, content
+        new_content = yield self.handler.get_group_summary(
+            group_id, requester_user_id
         )
 
         defer.returnValue((200, new_content))