def room_leave(self, room_id): query_parameters = {"access_token": self.access_token} path = ("{api}/rooms/{room_id}/leave?" "{query_parameters}").format( api=MATRIX_API_PATH, room_id=quote(room_id), query_parameters=urlencode(query_parameters)) return HttpRequest(RequestType.POST, self.host, path)
def room_invite(self, room_id, user_id): query_parameters = {"access_token": self.access_token} content = {"user_id": user_id} path = ("{api}/rooms/{room_id}/invite?" "{query_parameters}").format( api=MATRIX_API_PATH, room_id=quote(room_id), query_parameters=urlencode(query_parameters)) return HttpRequest(RequestType.POST, self.host, path, content)
def room_topic(self, room_id, topic): # type: (str, str) -> HttpRequest query_parameters = {"access_token": self.access_token} content = {"topic": topic} path = ("{api}/rooms/{room}/state/m.room.topic?" "{query_parameters}").format( api=MATRIX_API_PATH, room=quote(room_id), query_parameters=urlencode(query_parameters)) return HttpRequest(RequestType.PUT, self.host, path, content)
def room_kick(self, room_id, user_id, reason=None): query_parameters = {"access_token": self.access_token} content = {"user_id": user_id} if reason: content["reason"] = reason path = ("{api}/rooms/{room_id}/kick?" "{query_parameters}").format( api=MATRIX_API_PATH, room_id=quote(room_id), query_parameters=urlencode(query_parameters)) h = HttpRequest(RequestType.POST, self.host, path, content) return h
def sync(self, next_batch="", sync_filter=None): # type: (str, Dict[Any, Any]) -> HttpRequest assert self.access_token query_parameters = {"access_token": self.access_token} if sync_filter: query_parameters["filter"] = json.dumps(sync_filter, separators=(",", ":")) if next_batch: query_parameters["since"] = next_batch path = ("{api}/sync?{query_params}").format( api=MATRIX_API_PATH, query_params=urlencode(query_parameters)) return HttpRequest(RequestType.GET, self.host, path)
def login(self, user, password, device_name="", device_id=""): # type (str, str, str) -> HttpRequest path = ("{api}/login").format(api=MATRIX_API_PATH) post_data = { "type": "m.login.password", "user": user, "password": password } if device_id: post_data["device_id"] = device_id if device_name: post_data["initial_device_display_name"] = device_name return HttpRequest(RequestType.POST, self.host, path, post_data)
def room_redact(self, room_id, event_id, reason=None): # type: (str, str, str) -> HttpRequest query_parameters = {"access_token": self.access_token} content = {} if reason: content["reason"] = reason path = ("{api}/rooms/{room}/redact/{event_id}/{tx_id}?" "{query_parameters}").format( api=MATRIX_API_PATH, room=quote(room_id), event_id=quote(event_id), tx_id=quote(str(self._get_txn_id())), query_parameters=urlencode(query_parameters)) return HttpRequest(RequestType.PUT, self.host, path, content)
def room_send_message(self, room_id, message_type, content, formatted_content=None): # type: (str, str, str) -> HttpRequest query_parameters = {"access_token": self.access_token} body = {"msgtype": message_type, "body": content} if formatted_content: body["format"] = "org.matrix.custom.html" body["formatted_body"] = formatted_content path = ("{api}/rooms/{room}/send/m.room.message/" "{tx_id}?{query_parameters}").format( api=MATRIX_API_PATH, room=quote(room_id), tx_id=quote(str(self._get_txn_id())), query_parameters=urlencode(query_parameters)) return HttpRequest(RequestType.PUT, self.host, path, body)
def room_get_messages(self, room_id, start_token, end_token="", limit=10, direction='b'): query_parameters = { "access_token": self.access_token, "from": start_token, "dir": direction, "limit": str(limit) } if end_token: query_parameters["to"] = end_token path = ("{api}/rooms/{room}/messages?{query_parameters}").format( api=MATRIX_API_PATH, room=quote(room_id), query_parameters=urlencode(query_parameters)) return HttpRequest(RequestType.GET, self.host, path)