Start separating messages into their own subclasses.
This commit is contained in:
parent
1ad643f206
commit
7ab59ec636
2 changed files with 56 additions and 3 deletions
14
main.py
14
main.py
|
@ -31,7 +31,12 @@ from typing import (List, Set, Dict, Tuple, Text, Optional, AnyStr, Deque, Any)
|
||||||
from matrix.colors import Formatted
|
from matrix.colors import Formatted
|
||||||
from matrix.utf import utf8_decode
|
from matrix.utf import utf8_decode
|
||||||
from matrix.http import HttpResponse
|
from matrix.http import HttpResponse
|
||||||
from matrix.api import MatrixMessage, MessageType, matrix_login
|
from matrix.api import (
|
||||||
|
MatrixMessage,
|
||||||
|
MessageType,
|
||||||
|
matrix_login,
|
||||||
|
MatrixSendMessage
|
||||||
|
)
|
||||||
from matrix.messages import handle_http_response
|
from matrix.messages import handle_http_response
|
||||||
|
|
||||||
# Weechat searches for the registered callbacks in the scope of the main script
|
# Weechat searches for the registered callbacks in the scope of the main script
|
||||||
|
@ -409,8 +414,11 @@ def room_input_cb(server_name, buffer, input_data):
|
||||||
|
|
||||||
formatted_data = Formatted.from_input_line(input_data)
|
formatted_data = Formatted.from_input_line(input_data)
|
||||||
|
|
||||||
message = MatrixMessage(server, OPTIONS, MessageType.SEND, room_id=room_id,
|
message = MatrixSendMessage(
|
||||||
formatted_message=formatted_data)
|
server.client,
|
||||||
|
room_id=room_id,
|
||||||
|
formatted_message=formatted_data
|
||||||
|
)
|
||||||
|
|
||||||
server.send_or_queue(message)
|
server.send_or_queue(message)
|
||||||
return W.WEECHAT_RC_OK
|
return W.WEECHAT_RC_OK
|
||||||
|
|
|
@ -307,6 +307,51 @@ class MatrixMessage:
|
||||||
self.request = server.client.room_invite(self.room_id, self.user_id)
|
self.request = server.client.room_invite(self.room_id, self.user_id)
|
||||||
|
|
||||||
|
|
||||||
|
class MatrixGenericMessage():
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
message_type, # type: MessageType
|
||||||
|
request_func, # type: Callable[[...], HttpRequest]
|
||||||
|
func_args,
|
||||||
|
):
|
||||||
|
# type: (...) -> None
|
||||||
|
self.type = message_type # type: MessageType
|
||||||
|
|
||||||
|
self.request = None # type: HttpRequest
|
||||||
|
self.response = None # type: HttpResponse
|
||||||
|
self.decoded_response = None # type: Dict[Any, Any]
|
||||||
|
|
||||||
|
self.creation_time = time.time() # type: float
|
||||||
|
self.send_time = None # type: float
|
||||||
|
self.receive_time = None # type: float
|
||||||
|
|
||||||
|
self.request = request_func(**func_args)
|
||||||
|
|
||||||
|
|
||||||
|
class MatrixSendMessage(MatrixGenericMessage):
|
||||||
|
def __init__(self, client, room_id, formatted_message):
|
||||||
|
self.room_id = room_id
|
||||||
|
self.formatted_message = formatted_message
|
||||||
|
|
||||||
|
assert self.room_id
|
||||||
|
assert self.formatted_message
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"room_id": self.room_id,
|
||||||
|
"content": self.formatted_message.to_plain()
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.formatted_message.is_formatted:
|
||||||
|
data["formatted_content"] = self.formatted_message.to_html()
|
||||||
|
|
||||||
|
MatrixGenericMessage.__init__(
|
||||||
|
self,
|
||||||
|
MessageType.SEND,
|
||||||
|
client.room_send_message,
|
||||||
|
data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class MatrixUser:
|
class MatrixUser:
|
||||||
def __init__(self, name, display_name):
|
def __init__(self, name, display_name):
|
||||||
self.name = name # type: str
|
self.name = name # type: str
|
||||||
|
|
Loading…
Add table
Reference in a new issue