diff options
author | Erik Johnston <erikj@jki.re> | 2017-10-24 09:21:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-24 09:21:47 +0100 |
commit | 9e2c22c97f018007da95bf22f48173ea3b9fd1ed (patch) | |
tree | 8dccdc67ee0e19ff8e21e3230c9c0b0ccd4a9855 /synapse | |
parent | Merge pull request #2568 from matrix-org/rav/pep8 (diff) | |
parent | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/group_fed_... (diff) | |
download | synapse-9e2c22c97f018007da95bf22f48173ea3b9fd1ed.tar.xz |
Merge pull request #2567 from matrix-org/erikj/group_fed_update_profile
Correctly wire in update group profile over federation
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/federation/transport/client.py | 20 | ||||
-rw-r--r-- | synapse/federation/transport/server.py | 22 |
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)) |