server: Add topic setting.
This commit is contained in:
parent
173e345060
commit
f1e87fe9b0
2 changed files with 26 additions and 4 deletions
|
@ -204,8 +204,9 @@ def matrix_topic_command_cb(data, buffer, args):
|
||||||
return W.WEECHAT_RC_OK
|
return W.WEECHAT_RC_OK
|
||||||
|
|
||||||
topic = "" if parsed_args.delete else " ".join(parsed_args.topic)
|
topic = "" if parsed_args.delete else " ".join(parsed_args.topic)
|
||||||
|
content = {"topic": topic}
|
||||||
|
server.room_send_state(room, content, "m.room.topic")
|
||||||
|
|
||||||
# TODO set the new topic
|
|
||||||
return W.WEECHAT_RC_OK
|
return W.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ from nio import (
|
||||||
LoginResponse,
|
LoginResponse,
|
||||||
SyncRepsponse,
|
SyncRepsponse,
|
||||||
RoomSendResponse,
|
RoomSendResponse,
|
||||||
|
RoomPutStateResponse,
|
||||||
TransportResponse,
|
TransportResponse,
|
||||||
TransportType,
|
TransportType,
|
||||||
LocalProtocolError
|
LocalProtocolError
|
||||||
|
@ -476,6 +477,14 @@ class MatrixServer(object):
|
||||||
|
|
||||||
W.prnt(self.server_buffer, msg)
|
W.prnt(self.server_buffer, msg)
|
||||||
|
|
||||||
|
def room_send_state(self, room_buffer, body, event_type):
|
||||||
|
_, request = self.client.room_put_state(
|
||||||
|
room_buffer.room.room_id,
|
||||||
|
event_type,
|
||||||
|
body
|
||||||
|
)
|
||||||
|
self.send_or_queue(request)
|
||||||
|
|
||||||
def room_send_message(self, room_buffer, formatted, msgtype="m.text"):
|
def room_send_message(self, room_buffer, formatted, msgtype="m.text"):
|
||||||
# type: (RoomBuffer, Formatted) -> None
|
# type: (RoomBuffer, Formatted) -> None
|
||||||
if msgtype == "m.emote":
|
if msgtype == "m.emote":
|
||||||
|
@ -584,6 +593,15 @@ class MatrixServer(object):
|
||||||
self.next_batch = response.next_batch
|
self.next_batch = response.next_batch
|
||||||
self.schedule_sync()
|
self.schedule_sync()
|
||||||
|
|
||||||
|
def handle_transport_response(self, response):
|
||||||
|
self.error(("Error with response of type type: {}, "
|
||||||
|
"error code {}").format(
|
||||||
|
response.request_info.type, response.status_code))
|
||||||
|
|
||||||
|
# TODO better error handling.
|
||||||
|
if response.request_info.type == "sync":
|
||||||
|
self.disconnect()
|
||||||
|
|
||||||
def handle_response(self, response):
|
def handle_response(self, response):
|
||||||
# type: (MatrixMessage) -> None
|
# type: (MatrixMessage) -> None
|
||||||
self.lag = response.elapsed * 1000
|
self.lag = response.elapsed * 1000
|
||||||
|
@ -598,17 +616,20 @@ class MatrixServer(object):
|
||||||
W.bar_item_update("lag")
|
W.bar_item_update("lag")
|
||||||
|
|
||||||
if isinstance(response, TransportResponse):
|
if isinstance(response, TransportResponse):
|
||||||
self.error("Error in response, code: {}".format(
|
self.handle_transport_response(response)
|
||||||
response.status_code))
|
|
||||||
self.disconnect()
|
|
||||||
|
|
||||||
elif isinstance(response, LoginResponse):
|
elif isinstance(response, LoginResponse):
|
||||||
self._handle_login(response)
|
self._handle_login(response)
|
||||||
|
|
||||||
elif isinstance(response, SyncRepsponse):
|
elif isinstance(response, SyncRepsponse):
|
||||||
self._handle_sync(response)
|
self._handle_sync(response)
|
||||||
|
|
||||||
elif isinstance(response, RoomSendResponse):
|
elif isinstance(response, RoomSendResponse):
|
||||||
self.handle_own_messages(response)
|
self.handle_own_messages(response)
|
||||||
|
|
||||||
|
elif isinstance(response, RoomPutStateResponse):
|
||||||
|
pass
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def create_room_buffer(self, room_id):
|
def create_room_buffer(self, room_id):
|
||||||
|
|
Loading…
Add table
Reference in a new issue