mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-11-04 10:11:05 +01:00 
			
		
		
		
	URL quote path segments over federation
This commit is contained in:
		
							parent
							
								
									13decdbf96
								
							
						
					
					
						commit
						dab87b84a3
					
				@ -21,6 +21,7 @@ from synapse.api.urls import FEDERATION_PREFIX as PREFIX
 | 
			
		||||
from synapse.util.logutils import log_function
 | 
			
		||||
 | 
			
		||||
import logging
 | 
			
		||||
import urllib
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
logger = logging.getLogger(__name__)
 | 
			
		||||
@ -50,7 +51,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        logger.debug("get_room_state dest=%s, room=%s",
 | 
			
		||||
                     destination, room_id)
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/state/%s/" % room_id
 | 
			
		||||
        path = _create_path(PREFIX, "/state/%s/", room_id)
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination, path=path, args={"event_id": event_id},
 | 
			
		||||
        )
 | 
			
		||||
@ -72,7 +73,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        logger.debug("get_room_state_ids dest=%s, room=%s",
 | 
			
		||||
                     destination, room_id)
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/state_ids/%s/" % room_id
 | 
			
		||||
        path = _create_path(PREFIX, "/state_ids/%s/", room_id)
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination, path=path, args={"event_id": event_id},
 | 
			
		||||
        )
 | 
			
		||||
@ -94,7 +95,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        logger.debug("get_pdu dest=%s, event_id=%s",
 | 
			
		||||
                     destination, event_id)
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/event/%s/" % (event_id, )
 | 
			
		||||
        path = _create_path(PREFIX, "/event/%s/", event_id)
 | 
			
		||||
        return self.client.get_json(destination, path=path, timeout=timeout)
 | 
			
		||||
 | 
			
		||||
    @log_function
 | 
			
		||||
@ -120,7 +121,7 @@ class TransportLayerClient(object):
 | 
			
		||||
            # TODO: raise?
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/backfill/%s/" % (room_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/backfill/%s/", room_id)
 | 
			
		||||
 | 
			
		||||
        args = {
 | 
			
		||||
            "v": event_tuples,
 | 
			
		||||
@ -158,9 +159,11 @@ class TransportLayerClient(object):
 | 
			
		||||
        # generated by the json_data_callback.
 | 
			
		||||
        json_data = transaction.get_dict()
 | 
			
		||||
 | 
			
		||||
        path = _create_path(PREFIX, "/send/%s/", transaction.transaction_id)
 | 
			
		||||
 | 
			
		||||
        response = yield self.client.put_json(
 | 
			
		||||
            transaction.destination,
 | 
			
		||||
            path=PREFIX + "/send/%s/" % transaction.transaction_id,
 | 
			
		||||
            path=path,
 | 
			
		||||
            data=json_data,
 | 
			
		||||
            json_data_callback=json_data_callback,
 | 
			
		||||
            long_retries=True,
 | 
			
		||||
@ -178,7 +181,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @log_function
 | 
			
		||||
    def make_query(self, destination, query_type, args, retry_on_dns_fail,
 | 
			
		||||
                   ignore_backoff=False):
 | 
			
		||||
        path = PREFIX + "/query/%s" % query_type
 | 
			
		||||
        path = _create_path(PREFIX, "/query/%s", query_type)
 | 
			
		||||
 | 
			
		||||
        content = yield self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -223,7 +226,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                "make_membership_event called with membership='%s', must be one of %s" %
 | 
			
		||||
                (membership, ",".join(valid_memberships))
 | 
			
		||||
            )
 | 
			
		||||
        path = PREFIX + "/make_%s/%s/%s" % (membership, room_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/make_%s/%s/%s", membership, room_id, user_id)
 | 
			
		||||
 | 
			
		||||
        ignore_backoff = False
 | 
			
		||||
        retry_on_dns_fail = False
 | 
			
		||||
@ -249,7 +252,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @defer.inlineCallbacks
 | 
			
		||||
    @log_function
 | 
			
		||||
    def send_join(self, destination, room_id, event_id, content):
 | 
			
		||||
        path = PREFIX + "/send_join/%s/%s" % (room_id, event_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/send_join/%s/%s", room_id, event_id)
 | 
			
		||||
 | 
			
		||||
        response = yield self.client.put_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -262,7 +265,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @defer.inlineCallbacks
 | 
			
		||||
    @log_function
 | 
			
		||||
    def send_leave(self, destination, room_id, event_id, content):
 | 
			
		||||
        path = PREFIX + "/send_leave/%s/%s" % (room_id, event_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/send_leave/%s/%s", room_id, event_id)
 | 
			
		||||
 | 
			
		||||
        response = yield self.client.put_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -281,7 +284,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @defer.inlineCallbacks
 | 
			
		||||
    @log_function
 | 
			
		||||
    def send_invite(self, destination, room_id, event_id, content):
 | 
			
		||||
        path = PREFIX + "/invite/%s/%s" % (room_id, event_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/invite/%s/%s", room_id, event_id)
 | 
			
		||||
 | 
			
		||||
        response = yield self.client.put_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -323,7 +326,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @defer.inlineCallbacks
 | 
			
		||||
    @log_function
 | 
			
		||||
    def exchange_third_party_invite(self, destination, room_id, event_dict):
 | 
			
		||||
        path = PREFIX + "/exchange_third_party_invite/%s" % (room_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/exchange_third_party_invite/%s", room_id,)
 | 
			
		||||
 | 
			
		||||
        response = yield self.client.put_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -336,7 +339,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @defer.inlineCallbacks
 | 
			
		||||
    @log_function
 | 
			
		||||
    def get_event_auth(self, destination, room_id, event_id):
 | 
			
		||||
        path = PREFIX + "/event_auth/%s/%s" % (room_id, event_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/event_auth/%s/%s", room_id, event_id)
 | 
			
		||||
 | 
			
		||||
        content = yield self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -348,7 +351,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @defer.inlineCallbacks
 | 
			
		||||
    @log_function
 | 
			
		||||
    def send_query_auth(self, destination, room_id, event_id, content):
 | 
			
		||||
        path = PREFIX + "/query_auth/%s/%s" % (room_id, event_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/query_auth/%s/%s", room_id, event_id)
 | 
			
		||||
 | 
			
		||||
        content = yield self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -410,7 +413,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        Returns:
 | 
			
		||||
            A dict containg the device keys.
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/user/devices/" + user_id
 | 
			
		||||
        path = _create_path(PREFIX, "/user/devices/%s", user_id)
 | 
			
		||||
 | 
			
		||||
        content = yield self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -460,7 +463,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    @log_function
 | 
			
		||||
    def get_missing_events(self, destination, room_id, earliest_events,
 | 
			
		||||
                           latest_events, limit, min_depth, timeout):
 | 
			
		||||
        path = PREFIX + "/get_missing_events/%s" % (room_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/get_missing_events/%s", room_id,)
 | 
			
		||||
 | 
			
		||||
        content = yield self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -480,7 +483,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_group_profile(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get a group profile
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/profile" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/profile", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -499,7 +502,7 @@ class TransportLayerClient(object):
 | 
			
		||||
            requester_user_id (str)
 | 
			
		||||
            content (dict): The new profile of the group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/profile" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/profile", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -513,7 +516,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_group_summary(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get a group summary
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/summary" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/summary", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -526,7 +529,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_rooms_in_group(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get all rooms in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/rooms" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/rooms", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -539,7 +542,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                          content):
 | 
			
		||||
        """Add a room to a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/room/%s" % (group_id, room_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/room/%s", group_id, room_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -553,7 +556,10 @@ class TransportLayerClient(object):
 | 
			
		||||
                             config_key, content):
 | 
			
		||||
        """Update room in group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/room/%s/config/%s" % (group_id, room_id, config_key,)
 | 
			
		||||
        path = _create_path(
 | 
			
		||||
            PREFIX, "/groups/%s/room/%s/config/%s",
 | 
			
		||||
            group_id, room_id, config_key,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -566,7 +572,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def remove_room_from_group(self, destination, group_id, requester_user_id, room_id):
 | 
			
		||||
        """Remove a room from a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/room/%s" % (group_id, room_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/room/%s", group_id, room_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.delete_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -579,7 +585,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_users_in_group(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get users in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/users" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/users", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -592,7 +598,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_invited_users_in_group(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get users that have been invited to a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/invited_users" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/invited_users", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -605,7 +611,10 @@ class TransportLayerClient(object):
 | 
			
		||||
    def accept_group_invite(self, destination, group_id, user_id, content):
 | 
			
		||||
        """Accept a group invite
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/users/%s/accept_invite" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(
 | 
			
		||||
            PREFIX, "/groups/%s/users/%s/accept_invite",
 | 
			
		||||
            group_id, user_id,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -618,7 +627,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def join_group(self, destination, group_id, user_id, content):
 | 
			
		||||
        """Attempts to join a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/users/%s/join" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/users/%s/join", group_id, user_id)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -631,7 +640,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def invite_to_group(self, destination, group_id, user_id, requester_user_id, content):
 | 
			
		||||
        """Invite a user to a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/users/%s/invite" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/users/%s/invite", group_id, user_id)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -647,7 +656,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        invited.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/groups/local/%s/users/%s/invite" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/local/%s/users/%s/invite", group_id, user_id)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -661,7 +670,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                               user_id, content):
 | 
			
		||||
        """Remove a user fron a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/users/%s/remove" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/users/%s/remove", group_id, user_id)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -678,7 +687,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        kicked from the group.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/groups/local/%s/users/%s/remove" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/local/%s/users/%s/remove", group_id, user_id)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -693,7 +702,7 @@ class TransportLayerClient(object):
 | 
			
		||||
        the attestations
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        path = PREFIX + "/groups/%s/renew_attestation/%s" % (group_id, user_id)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/renew_attestation/%s", group_id, user_id)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -708,11 +717,12 @@ class TransportLayerClient(object):
 | 
			
		||||
        """Update a room entry in a group summary
 | 
			
		||||
        """
 | 
			
		||||
        if category_id:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/categories/%s/rooms/%s" % (
 | 
			
		||||
            path = _create_path(
 | 
			
		||||
                PREFIX, "/groups/%s/summary/categories/%s/rooms/%s",
 | 
			
		||||
                group_id, category_id, room_id,
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/rooms/%s" % (group_id, room_id,)
 | 
			
		||||
            path = _create_path(PREFIX, "/groups/%s/summary/rooms/%s", group_id, room_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -728,11 +738,12 @@ class TransportLayerClient(object):
 | 
			
		||||
        """Delete a room entry in a group summary
 | 
			
		||||
        """
 | 
			
		||||
        if category_id:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/categories/%s/rooms/%s" % (
 | 
			
		||||
            path = _create_path(
 | 
			
		||||
                PREFIX + "/groups/%s/summary/categories/%s/rooms/%s",
 | 
			
		||||
                group_id, category_id, room_id,
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/rooms/%s" % (group_id, room_id,)
 | 
			
		||||
            path = _create_path(PREFIX, "/groups/%s/summary/rooms/%s", group_id, room_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.delete_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -745,7 +756,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_group_categories(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get all categories in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/categories" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/categories", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -758,7 +769,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_group_category(self, destination, group_id, requester_user_id, category_id):
 | 
			
		||||
        """Get category info in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/categories/%s" % (group_id, category_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/categories/%s", group_id, category_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -772,7 +783,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                              content):
 | 
			
		||||
        """Update a category in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/categories/%s" % (group_id, category_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/categories/%s", group_id, category_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -787,7 +798,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                              category_id):
 | 
			
		||||
        """Delete a category in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/categories/%s" % (group_id, category_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/categories/%s", group_id, category_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.delete_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -800,7 +811,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_group_roles(self, destination, group_id, requester_user_id):
 | 
			
		||||
        """Get all roles in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/roles" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/roles", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -813,7 +824,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def get_group_role(self, destination, group_id, requester_user_id, role_id):
 | 
			
		||||
        """Get a roles info
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/roles/%s" % (group_id, role_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/roles/%s", group_id, role_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.get_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -827,7 +838,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                          content):
 | 
			
		||||
        """Update a role in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/roles/%s" % (group_id, role_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/roles/%s", group_id, role_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -841,7 +852,7 @@ class TransportLayerClient(object):
 | 
			
		||||
    def delete_group_role(self, destination, group_id, requester_user_id, role_id):
 | 
			
		||||
        """Delete a role in a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/roles/%s" % (group_id, role_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/roles/%s", group_id, role_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.delete_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -856,11 +867,12 @@ class TransportLayerClient(object):
 | 
			
		||||
        """Update a users entry in a group
 | 
			
		||||
        """
 | 
			
		||||
        if role_id:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/roles/%s/users/%s" % (
 | 
			
		||||
            path = _create_path(
 | 
			
		||||
                PREFIX, "/groups/%s/summary/roles/%s/users/%s",
 | 
			
		||||
                group_id, role_id, user_id,
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/users/%s" % (group_id, user_id,)
 | 
			
		||||
            path = _create_path(PREFIX, "/groups/%s/summary/users/%s", group_id, user_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.post_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -875,7 +887,7 @@ class TransportLayerClient(object):
 | 
			
		||||
                              content):
 | 
			
		||||
        """Sets the join policy for a group
 | 
			
		||||
        """
 | 
			
		||||
        path = PREFIX + "/groups/%s/settings/m.join_policy" % (group_id,)
 | 
			
		||||
        path = _create_path(PREFIX, "/groups/%s/settings/m.join_policy", group_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.put_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -891,11 +903,12 @@ class TransportLayerClient(object):
 | 
			
		||||
        """Delete a users entry in a group
 | 
			
		||||
        """
 | 
			
		||||
        if role_id:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/roles/%s/users/%s" % (
 | 
			
		||||
            path = _create_path(
 | 
			
		||||
                PREFIX, "/groups/%s/summary/roles/%s/users/%s",
 | 
			
		||||
                group_id, role_id, user_id,
 | 
			
		||||
            )
 | 
			
		||||
        else:
 | 
			
		||||
            path = PREFIX + "/groups/%s/summary/users/%s" % (group_id, user_id,)
 | 
			
		||||
            path = _create_path(PREFIX, "/groups/%s/summary/users/%s", group_id, user_id,)
 | 
			
		||||
 | 
			
		||||
        return self.client.delete_json(
 | 
			
		||||
            destination=destination,
 | 
			
		||||
@ -918,3 +931,22 @@ class TransportLayerClient(object):
 | 
			
		||||
            data=content,
 | 
			
		||||
            ignore_backoff=True,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _create_path(prefix, path, *args):
 | 
			
		||||
    """Creates a path from the prefix, path template and args. Ensures that
 | 
			
		||||
    all args are url encoded.
 | 
			
		||||
 | 
			
		||||
    Example:
 | 
			
		||||
 | 
			
		||||
        _create_path(PREFIX, "/event/%s/", event_id)
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        prefix (str)
 | 
			
		||||
        path (str): String template for the path
 | 
			
		||||
        args: ([str]): Args to insert into path. Each arg will be url encoded
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
        str
 | 
			
		||||
    """
 | 
			
		||||
    return prefix + path % tuple(urllib.quote(arg) for arg in args)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user