summary refs log tree commit diff
path: root/synapse/federation
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2017-10-24 15:02:25 +0100
committerErik Johnston <erik@matrix.org>2017-10-24 15:02:25 +0100
commitf009df23ec711e943d958bb0a0e3185d42d7cc79 (patch)
tree30fa4558fe72f9429b0d533d12653dc786ad9692 /synapse/federation
parentMerge branch 'release-v0.24.0' of github.com:matrix-org/synapse (diff)
parentBump version and changelog (diff)
downloadsynapse-f009df23ec711e943d958bb0a0e3185d42d7cc79.tar.xz
Merge branch 'release-v0.24.1' of github.com:matrix-org/synapse v0.24.1
Diffstat (limited to 'synapse/federation')
-rw-r--r--synapse/federation/transport/client.py20
-rw-r--r--synapse/federation/transport/server.py28
2 files changed, 34 insertions, 14 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 f0778c65c5..8f3c14c303 100644
--- a/synapse/federation/transport/server.py
+++ b/synapse/federation/transport/server.py
@@ -112,7 +112,7 @@ class Authenticator(object):
                 key = strip_quotes(param_dict["key"])
                 sig = strip_quotes(param_dict["sig"])
                 return (origin, key, sig)
-            except:
+            except Exception:
                 raise AuthenticationError(
                     400, "Malformed Authorization header", Codes.UNAUTHORIZED
                 )
@@ -177,7 +177,7 @@ class BaseFederationServlet(object):
                 if self.REQUIRE_AUTH:
                     logger.exception("authenticate_request failed")
                     raise
-            except:
+            except Exception:
                 logger.exception("authenticate_request failed")
                 raise
 
@@ -270,7 +270,7 @@ class FederationSendServlet(BaseFederationServlet):
             code, response = yield self.handler.on_incoming_transaction(
                 transaction_data
             )
-        except:
+        except Exception:
             logger.exception("on_incoming_transaction failed")
             raise
 
@@ -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))