From e51ce99c1ad96cd55494655938c4ff59eacebebd Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 7 Mar 2019 19:47:36 +0100 Subject: [PATCH] Move graphql_to_poll_option -> PollOption._from_graphql --- fbchat/_client.py | 2 +- fbchat/_graphql.py | 24 +----------------------- fbchat/_poll.py | 24 ++++++++++++++++++++++++ fbchat/graphql.py | 1 - 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/fbchat/_client.py b/fbchat/_client.py index 7c514c9..cf1551a 100644 --- a/fbchat/_client.py +++ b/fbchat/_client.py @@ -1248,7 +1248,7 @@ class Client(object): self.req_url.GET_POLL_OPTIONS, data, fix_request=True, as_json=True ) - return [graphql_to_poll_option(m) for m in j["payload"]] + return [PollOption._from_graphql(m) for m in j["payload"]] def fetchPlanInfo(self, plan_id): """ diff --git a/fbchat/_graphql.py b/fbchat/_graphql.py index 9692d7a..366a7ee 100644 --- a/fbchat/_graphql.py +++ b/fbchat/_graphql.py @@ -220,35 +220,13 @@ def graphql_to_live_location(a): def graphql_to_poll(a): rtn = Poll( title=a.get("title") if a.get("title") else a.get("text"), - options=[graphql_to_poll_option(m) for m in a.get("options")], + options=[PollOption._from_graphql(m) for m in a.get("options")], ) rtn.uid = int(a["id"]) rtn.options_count = a.get("total_count") return rtn -def graphql_to_poll_option(a): - if a.get("viewer_has_voted") is None: - vote = None - elif isinstance(a["viewer_has_voted"], bool): - vote = a["viewer_has_voted"] - else: - vote = a["viewer_has_voted"] == "true" - rtn = PollOption(text=a.get("text"), vote=vote) - rtn.uid = int(a["id"]) - rtn.voters = ( - [m.get("node").get("id") for m in a.get("voters").get("edges")] - if isinstance(a.get("voters"), dict) - else a.get("voters") - ) - rtn.votes_count = ( - a.get("voters").get("count") - if isinstance(a.get("voters"), dict) - else a.get("total_count") - ) - return rtn - - def graphql_to_plan(a): if a.get("event_members"): rtn = Plan( diff --git a/fbchat/_poll.py b/fbchat/_poll.py index c2c02c0..d99e57e 100644 --- a/fbchat/_poll.py +++ b/fbchat/_poll.py @@ -32,3 +32,27 @@ class PollOption(object): voters = attr.ib(None, init=False) #: Votes count votes_count = attr.ib(None, init=False) + + @classmethod + def _from_graphql(cls, data): + if data.get("viewer_has_voted") is None: + vote = None + elif isinstance(data["viewer_has_voted"], bool): + vote = data["viewer_has_voted"] + else: + vote = data["viewer_has_voted"] == "true" + return cls( + uid=int(data["id"]), + text=data.get("text"), + vote=vote, + voters=( + [m.get("node").get("id") for m in data.get("voters").get("edges")] + if isinstance(data.get("voters"), dict) + else data.get("voters") + ), + votes_count=( + data.get("voters").get("count") + if isinstance(data.get("voters"), dict) + else data.get("total_count") + ), + ) diff --git a/fbchat/graphql.py b/fbchat/graphql.py index 1f5dc85..b1fee72 100644 --- a/fbchat/graphql.py +++ b/fbchat/graphql.py @@ -14,7 +14,6 @@ from ._graphql import ( graphql_to_subattachment, graphql_to_live_location, graphql_to_poll, - graphql_to_poll_option, graphql_to_plan, graphql_to_quick_reply, graphql_to_message,