Message parsing fixes

This commit is contained in:
Mads Marquart
2020-01-13 10:01:24 +01:00
parent 26f99d983e
commit 281ef4714f
2 changed files with 26 additions and 4 deletions

View File

@@ -43,8 +43,10 @@ class Mention:
@classmethod
def _from_range(cls, data):
# TODO: Parse data["entity"]["__typename"]
return cls(
thread_id=data["entity"]["id"],
# Can be missing
thread_id=data["entity"].get("id"),
offset=data["offset"],
length=data["length"],
)
@@ -234,7 +236,7 @@ class MessageData(Message):
attachments = [
_file.graphql_to_attachment(attachment)
for attachment in data["blob_attachments"] or ()
for attachment in data.get("blob_attachments") or ()
]
unsent = False
if data.get("extensible_attachment") is not None:
@@ -245,8 +247,11 @@ class MessageData(Message):
attachments.append(attachment)
replied_to = None
if data.get("replied_to_message"):
replied_to = cls._from_graphql(data["replied_to_message"]["message"])
if data.get("replied_to_message") and data["replied_to_message"]["message"]:
# data["replied_to_message"]["message"] is None if the message is deleted
replied_to = cls._from_graphql(
thread, data["replied_to_message"]["message"]
)
return cls(
thread=thread,

View File

@@ -47,6 +47,23 @@ def test_graphql_to_extensible_attachment_dispatch(monkeypatch, obj, type_):
assert graphql_to_extensible_attachment(data)
def test_mention_from_range():
data = {"length": 17, "offset": 0, "entity": {"__typename": "User", "id": "1234"}}
assert Mention(thread_id="1234", offset=0, length=17) == Mention._from_range(data)
data = {
"length": 2,
"offset": 10,
"entity": {"__typename": "MessengerViewer1To1Thread"},
}
assert Mention(thread_id=None, offset=10, length=2) == Mention._from_range(data)
data = {
"length": 5,
"offset": 21,
"entity": {"__typename": "MessengerViewerGroupThread"},
}
assert Mention(thread_id=None, offset=21, length=5) == Mention._from_range(data)
def test_mention_to_send_data():
assert {
"profile_xmd[0][id]": "1234",