Message parsing fixes
This commit is contained in:
@@ -43,8 +43,10 @@ class Mention:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _from_range(cls, data):
|
def _from_range(cls, data):
|
||||||
|
# TODO: Parse data["entity"]["__typename"]
|
||||||
return cls(
|
return cls(
|
||||||
thread_id=data["entity"]["id"],
|
# Can be missing
|
||||||
|
thread_id=data["entity"].get("id"),
|
||||||
offset=data["offset"],
|
offset=data["offset"],
|
||||||
length=data["length"],
|
length=data["length"],
|
||||||
)
|
)
|
||||||
@@ -234,7 +236,7 @@ class MessageData(Message):
|
|||||||
|
|
||||||
attachments = [
|
attachments = [
|
||||||
_file.graphql_to_attachment(attachment)
|
_file.graphql_to_attachment(attachment)
|
||||||
for attachment in data["blob_attachments"] or ()
|
for attachment in data.get("blob_attachments") or ()
|
||||||
]
|
]
|
||||||
unsent = False
|
unsent = False
|
||||||
if data.get("extensible_attachment") is not None:
|
if data.get("extensible_attachment") is not None:
|
||||||
@@ -245,8 +247,11 @@ class MessageData(Message):
|
|||||||
attachments.append(attachment)
|
attachments.append(attachment)
|
||||||
|
|
||||||
replied_to = None
|
replied_to = None
|
||||||
if data.get("replied_to_message"):
|
if data.get("replied_to_message") and data["replied_to_message"]["message"]:
|
||||||
replied_to = cls._from_graphql(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(
|
return cls(
|
||||||
thread=thread,
|
thread=thread,
|
||||||
|
@@ -47,6 +47,23 @@ def test_graphql_to_extensible_attachment_dispatch(monkeypatch, obj, type_):
|
|||||||
assert graphql_to_extensible_attachment(data)
|
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():
|
def test_mention_to_send_data():
|
||||||
assert {
|
assert {
|
||||||
"profile_xmd[0][id]": "1234",
|
"profile_xmd[0][id]": "1234",
|
||||||
|
Reference in New Issue
Block a user