From 7ee736164689bcac7680ea8b1867aa6bedf1e6a6 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Wed, 5 Feb 2020 15:40:20 +0100 Subject: [PATCH] Clean up event parsing --- fbchat/_events/__init__.py | 5 ++--- fbchat/_events/_common.py | 14 +++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/fbchat/_events/__init__.py b/fbchat/_events/__init__.py index dbb1cbb..7410cdb 100644 --- a/fbchat/_events/__init__.py +++ b/fbchat/_events/__init__.py @@ -24,8 +24,7 @@ class Typing(ThreadEvent): return cls(author=author, thread=author, status=status) @classmethod - def _parse(cls, session, data): - # TODO: Rename this method + def _parse_thread_typing(cls, session, data): author = _threads.User(session=session, id=str(data["sender_fbid"])) thread = _threads.Group(session=session, id=str(data["thread"])) status = data["state"] == 1 @@ -90,7 +89,7 @@ def parse_events(session, topic, data): ) from e elif topic == "/thread_typing": - yield Typing._parse(session, data) + yield Typing._parse_thread_typing(session, data) elif topic == "/orca_typing_notifications": yield Typing._parse_orca(session, data) diff --git a/fbchat/_events/_common.py b/fbchat/_events/_common.py index d88fcc8..ec532b8 100644 --- a/fbchat/_events/_common.py +++ b/fbchat/_events/_common.py @@ -1,5 +1,4 @@ import attr -import abc from .._common import kw_only from .. import _exception, _util, _threads @@ -10,14 +9,9 @@ attrs_event = attr.s(slots=True, kw_only=kw_only, frozen=True) @attrs_event -class Event(metaclass=abc.ABCMeta): +class Event: """Base class for all events.""" - @classmethod - @abc.abstractmethod - def _parse(cls, session, data): - raise NotImplementedError - @staticmethod def _get_thread(session, data): # TODO: Handle pages? Is it even possible? @@ -60,3 +54,9 @@ class ThreadEvent(Event): thread = cls._get_thread(session, metadata) at = _util.millis_to_datetime(int(metadata["timestamp"])) return author, thread, at + + @classmethod + def _parse_fetch(cls, session, data): + author = _threads.User(session=session, id=data["message_sender"]["id"]) + at = _util.millis_to_datetime(int(data["timestamp_precise"])) + return author, at